为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

紫衣仙女 2022-10-11 21:23:31
我有一个文件,其中每行有 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]})
查看完整描述

3 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

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

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

如果密钥不存在,这将启动一个空列表,然后填充它。


查看完整回答
反对 回复 2022-10-11
?
慕容森

TA贡献1853条经验 获得超18个赞

您可以使用默认字典:


>>> from collections import defaultdict


>>> d = defaultdict(list)

>>> for i in range(0, len(l), 2):

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


查看完整回答
反对 回复 2022-10-11
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

创建一个 defaultdict 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])


查看完整回答
反对 回复 2022-10-11
  • 3 回答
  • 0 关注
  • 108 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信