创建一个python字典,其中的值是一个字符串列表

时间:2020-04-16 08:24:07

标签: python dictionary

我有一个文件,其中每行有2个名称。 假设我输入以下内容:

name1 name2
name3 name4
name1 name5

我想制作这样的字典:

名称1:[名称2,名称5]
name2:name1
name3:name4
name4:name3
name5:name1

这是我编写的代码,但我不知道自己做错了什么。

d = {} 
for i in range(len(l)): # consider l the input
    d[l[i]] = ""

for i in range(0, len(l), 2):
    e1 = l[i]
    e2 = l[i+1]

    d.update({e1 : [d[e1], e2]}) #i think the update operation is wrong here..
    d.update({e2 : [d[e2], e1]})

3 个答案:

答案 0 :(得分:1)

您可以将两个关键行更改为:

d.setdefault(e1, []).append(e2)
d.setdefault(e2, []).append(e1)

如果密钥不存在,这将开始一个空列表,然后填写它。

答案 1 :(得分:0)

创建一个默认字典d,该字典将空列表设置为每个键的初始值,并在您迭代l时填充它们。

from collections import defaultdict
l = ['name1', 'name2', 'name3', 'name4', 'name1', 'name5'] # Values come in pairs
d = defaultdict(list) # Defaults all keys to []

for i in range(0, len(l), 2):
    d[l[i]].append(l[i+1])
    d[l[i+1]].append(l[i])

答案 2 :(得分:0)

您可以使用defaultdict:

>>> from collections import defaultdict

>>> d = defaultdict(list)
>>> for i in range(0, len(l), 2):
...     d[e1].append(e2)