【发布时间】:2018-12-21 16:59:14
【问题描述】:
我有一个清单:
name_list = ["David Joyner", "David Zuber", "Brenton Joyner",
"Brenton Zuber", "Nicol Barthel", "Shelba Barthel",
"Shelba Crowley", "Shelba Fernald", "Shelba Odle",
"Shelba Fry", "Maren Fry"]
我想写一个函数来返回一个字典,其中名字作为键,与名字相关的所有全名作为值:
{'Shelba': ['Shelba Barthel', 'Shelba Crowley', 'Shelba Fernald',
'Shelba Odle', 'Shelba Fry'], 'David': ['David Joyner', 'David Zuber'],
'Brenton': ['Brenton Joyner', 'Brenton Zuber'], 'Maren': ['Maren Fry'],
'Nicol': ['Nicol Barthel']}
谢谢。
【问题讨论】:
-
你尝试过什么,到底有什么问题?
-
使用一个 collection.defaultdict(list) 并浏览你的列表一次
-
all_name = {n: [n2 if n2.startswith(n) for n2 in name_list] for n in [n3.split() for n3 in name_list]}我不相信我的第一个列表理解是正确的,if 语句。 -
@PrestonHager 不太 - 请参阅我的回答中的“坏”解决方案。列表组合不适用于这种操作,因为您多次遍历整个列表 - (正确)使用的
defaultdict(list)仅遍历列表一次。
标签: python python-3.x dictionary