簡體   English   中英

創建一個 python 字典,其中值是字符串列表

[英]create a python dictionary where the value is a list of strings

我有一個文件,其中每行有 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]})

您可以將兩個關鍵行更改為:

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

如果密鑰不存在,這將啟動一個空列表,然后填充它。

創建一個 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])

您可以使用默認字典:

>>> from collections import defaultdict

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM