簡體   English   中英

創建每個鍵具有多個值的字典

[英]Create dictionary with multiple values per key

如何從2個列表中為每個鍵創建一個包含多個值的字典?

例如,我有:

>>> list1 = ['fruit', 'fruit', 'vegetable']

>>> list2 = ['apple', 'banana', 'carrot']

而且,我想要一些效果:

>>> dictionary = {'fruit': ['apple', 'banana'], 'vegetable': ['carrot']}

到目前為止,我已嘗試過以下內容:

>>> keys = list1
>>> values = list2
>>> dictionary = dict(zip(keys, values))
>>> dictionary
    {'fruit': 'banana', 'vegetable': 'carrot'}

你可以使用dict.setdefault和一個簡單的for循環:

>>> list1 = ["fruit", "fruit", "vegetable"]
>>> list2 = ["apple", "banana", "carrot"]
>>> dct = {}
>>> for i, j in zip(list1, list2):
...     dct.setdefault(i, []).append(j)
... 
>>> dct
{'fruit': ['apple', 'banana'], 'vegetable': ['carrot']}

來自文檔

setdefault(key[, default])

如果key在字典中,則返回其值。 如果沒有,插入key ,值為default和返回default default默認為None

您可以使用collections.defaultdict執行此類任務:

>>> from collections import defaultdict
>>> d=defaultdict(list)
>>> for i,j in zip(list1,list2):
...    d[i].append(j)
... 
>>> d
defaultdict(<type 'list'>, {'vegetable': ['carrot'], 'fruit': ['apple', 'banana']})

這與其他答案略有不同。 這對初學者來說有點簡單。

list1 = ['fruit', 'fruit', 'vegetable']
list2 = ['apple', 'banana', 'carrot']
dictionary = {}

for i in list1:
    dictionary[i] = []

for i in range(0,len(list1)):
    dictionary[list1[i]].append(list2[i])

它會回來

{'vegetable': ['carrot'], 'fruit': ['apple', 'banana']}

此代碼通過list1運行,並使其中的每個項目成為dictionary中空列表的鍵。 然后它從0-2開始並將list2每個項目附加到其相應的類別,以便每個匹配中的索引0匹配,每個匹配中的索引1和每個匹配中的索引2匹配。

暫無
暫無

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

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