Python 把清单变成字典

Python 把清单变成字典,python,python-3.x,Python,Python 3.x,我知道这个问题已经被问过无数次了,但我一直很难找到解决问题的办法 这是我的代码: try: dict1={} main_list = [line.rstrip() for line in open("food01.csv")] print(main_list) except IOError: print("Error opening file") CSV文件的输出: ['lion,gazelle', 'jackal,grass,zebra,gazelle', '

我知道这个问题已经被问过无数次了,但我一直很难找到解决问题的办法

这是我的代码:

try:
    dict1={}
    main_list = [line.rstrip() for line in open("food01.csv")]
    print(main_list)
except IOError:
    print("Error opening file")
CSV文件的输出:

['lion,gazelle', 'jackal,grass,zebra,gazelle', 'gazelle,grass,acacia leaves', 'zebra,grass']
我想要的是这样的列表字典:

{'lion':['gazelle'],'jackal':['grass,zebra,gazelle'],'gazelle':['grass,acacia leaves'],'zebra':['grass']}
{first: rest for cols in rows for first, *rest in (cols.split(','),)}
这应该可以做到

lst = ['lion,gazelle', 'jackal,grass,zebra,gazelle', 'gazelle,grass,acacia leaves', 'zebra,grass']

dct = {}
for l in lst:
    items = l.split(',')
    dct[items[0]] = items[1:]

print(dct)
#{'lion': ['gazelle'], 'jackal': ['grass', 'zebra', 'gazelle'], 'gazelle': ['grass', 'acacia leaves'], 'zebra': ['grass']}

您可以使用嵌套的dict理解,如下所示:

{'lion':['gazelle'],'jackal':['grass,zebra,gazelle'],'gazelle':['grass,acacia leaves'],'zebra':['grass']}
{first: rest for cols in rows for first, *rest in (cols.split(','),)}
因此,鉴于:

rows = ['lion,gazelle', 'jackal,grass,zebra,gazelle', 'gazelle,grass,acacia leaves', 'zebra,grass']
这将返回:

{'lion': ['gazelle'], 'jackal': ['grass', 'zebra', 'gazelle'], 'gazelle': ['grass', 'acacia leaves'], 'zebra': ['grass']}

为此,您需要有两个列表。1表示键1表示值 尝试将捕食者和猎物分成两个列表,然后使用zip将它们合并到字典中

keys = ["lion", "jackal", 'gazelle']
values = [["gazelle"], ["grass, zebra, gazelle"], ["grass, acacia leaves"]]
dict1 = dict(zip(keys, values))
print(dict1)

请注意,如果该行中只有一个单词,则不会在dict中添加任何内容。如果你想让元素有一个空的列表作为值,你可以删除ifI建议你在类似这样的东西中使用更具描述性的变量名;使它更具可读性。我是SO的新贡献者,有时我觉得使用太多的列表理解有时会使代码更难阅读,比如在本例中,我遇到了相同的问题,但在阅读了几遍之后,我发现了这个问题,只是替换了我更了解的变量名,并使用了我的代码。一个很好的解决方案,谢谢你布莱辛!当然,为了清楚起见,重命名了变量。