问题是我应该如何从两个不同长度的列表中创建字典。我没有字典。我想创建字典。
当我应用拆分方法时,我想从两个长度不同的列表中创建一个字典。例如
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"]
})
