Python将列表转换为具有多个键值的字典 [英] Python convert list to dict with multiple key value

查看:574
本文介绍了Python将列表转换为具有多个键值的字典的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个类似下面的列表,想将其转换为字典

I have a list something like below and want to convert it to dict

my_list = ['key1=value1', 'key2=value2', 'key3=value3-1', 'value3-2', 'value3-3', 'key4=value4', 'key5=value5', 'value5-1', 'value5-2', 'key6=value6']

如何将上面的列表转换为下面的字典

How can I convert above list to dict something like below

my_dict = {
  'key1': 'value1',
  'key2': 'value2',
  'key3': ['value3-1', 'value3-2', 'value3-3'],
  'key4': 'value4',
  'key5': ['value5', 'value5-1', 'value5-2'],
  'key6': 'value6'
}

推荐答案

几种方法可以做到这一点,这是一种: 我的第一个解决方案给出了每个值的列表,但是只有一个键有多个值时,您才需要一个列表.

Several ways to do this, this is one: my first solution gave a list for every value, but you only require a list when there is more than one value for a key.

my_list = ['key1=value1', 'key2=value2', 'key3=value3-1', 'value3-2', 'value3-3', 'key4=value4', 'key5=value5', 'value5-1', 'value5-2', 'key6=value6']

my_dict = {}
current_key = None
for item in my_list:
    if '=' in item:
        current_key, value = item.split('=')
        # This puts a string as the value
        my_dict[current_key] = value  
    else:
        # Check if the value is already a list
        if not isinstance(my_dict[current_key], list):
            # If value is not a list, create one
            my_dict[current_key] = [my_dict[current_key]]

        my_dict[current_key].append(item)

import pprint
pprint.pprint(my_dict)

赠予:

{'key1': 'value1',
 'key2': 'value2',
 'key3': ['value3-1', 'value3-2', 'value3-3'],
 'key4': 'value4',  
 'key5': ['value5', 'value5-1', 'value5-2'],
 'key6': 'value6'}

您可能希望通过检查current_key是否为None使其更强大.我把它留给你.

You might wish to make it more robust by checking if current_key is None. I'll leave that to you.

这篇关于Python将列表转换为具有多个键值的字典的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆