Skip to main content
 首页 » 编程设计

python之来自 Python 中 2 个不同长度列表的字典

2025年05月04日22softidea

问题是我应该如何从两个不同长度的列表中创建字典。我没有字典。我想创建字典。

当我应用拆分方法时,我想从两个长度不同的列表中创建一个字典。例如

 names 
 Out[41]:  
 ['Georgie Porgie', 
  'Queen St. Cafe', 
  'Dumplings R Us', 
  'Mexican Grill', 
  'Deep Fried Everything'] 
 
  cuisines 
  Out[42]: ['Canadian,Pub Food', 'Malaysian,Thai', 'Chinese', 'Mexican',  
  'Pub Food'] 
 
  cuisines_splited 
  Out[43]:  
  [['Canadian', 'Pub Food'], 
  ['Malaysian', 'Thai'], 
  ['Chinese'], 
  ['Mexican'], 
  ['Pub Food']] 

我想创建一个字典,使用 cuisine_splited 作为键,名称作为值。到目前为止,我已经尝试过了,但没有给出正确的答案。

cuisine_to_names = {} 
 
for cuis, name in zip(cuisines_splited, names): 
    for i in cuis: 
        cuisine_to_names[i] = name 
 
 
cuisine_to_names 
Out[46]:  
{'Canadian': 'Georgie Porgie', 
 'Chinese': 'Dumplings R Us', 
 'Malaysian': 'Queen St. Cafe', 
 'Mexican': 'Mexican Grill', 
 'Pub Food': 'Deep Fried Everything', 
 'Thai': 'Queen St. Cafe'} 

期望的输出是:

{'Canadian': ['Georgie Porgie'], 
 'Pub Food': ['Georgie Porgie', 'Deep Fried Everything'], 
 'Malaysian': ['Queen St. Cafe'], 
 'Thai': ['Queen St. Cafe'], 
 'Chinese': ['Dumplings R Us'], 
 'Mexican': ['Mexican Grill']} 

请您参考如下方法:

您需要有类似的列表才能开始。您需要在压缩和使用 defaultdict 时拆分.

from collections import defaultdict 
 
names = ['Georgie Porgie', 'Queen St. Cafe', 'Dumplings R Us', 'Mexican Grill', 'Deep Fried Everything'] 
cuisines =  ['Canadian,Pub Food', 'Malaysian,Thai', 'Chinese', 'Mexican',  'Pub Food'] 
 
from collections import defaultdict 
 
d = defaultdict(list) 
for mk, v in zip(cuisines, names): 
    for k in mk.split(','): 
        d[k.strip()].append(v.strip()) 
 
print(d) 
 
out: 
defaultdict(<class 'list'>, { 
    "Canadian": ["Georgie Porgie"], 
    "Pub Food": ["Georgie Porgie", "Deep Fried Everything"], 
    "Malaysian": ["Queen St. Cafe"], 
    "Thai": ["Queen St. Cafe"], 
    "Chinese": ["Dumplings R Us"], 
    "Mexican": ["Mexican Grill"] 
})