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

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

名称1 名称2 名称3 名称4 名称
1
名称5

我想做一个这样的字典:

名称 1:[名称 2,名称 5]
名称 2:名称1 名称 3
:名称 4 名称
4:名称 3 名称 5
:名称1

这是我制作的代码,但我无法弄清楚我做错了什么..

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]})


紫衣仙女
浏览 109回答 3
3回答

慕工程0101907

您可以将两个关键行更改为:d.setdefault(e1, []).append(e2) d.setdefault(e2, []).append(e1)如果密钥不存在,这将启动一个空列表,然后填充它。

慕容森

您可以使用默认字典:>>> from collections import defaultdict>>> d = defaultdict(list)>>> for i in range(0, len(l), 2):...     d[e1].append(e2)

Cats萌萌

创建一个 defaultdict d,它将空列表设置为每个键的初始值,并在迭代时填充它们l。from collections import defaultdictl = ['name1', 'name2', 'name3', 'name4', 'name1', 'name5'] # Values come in pairsd = 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])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python