我有一份清单:
name_list = ["David Joyner", "David Zuber", "Brenton Joyner",
"Brenton Zuber", "Nicol Barthel", "Shelba Barthel",
"Shelba Crowley", "Shelba Fernald", "Shelba Odle",
"Shelba Fry", "Maren Fry"]
我想写一个函数来返回一个以名字为键,所有与名字相关联的全名作为值的字典:
^{pr2}$
谢谢。在
Tags:
聪明的方法(1次通过您的列表):
输出:
^{pr2}$慢方式(看起来不错,但效率低下):
这在计算上比
defaultdict
版本差得多,因为它多次遍历列表:set( p.split()[0] for p in name_list)
[n for n in name_list if n.startswith(key)]
如果以后需要排序,只需在
dict
的值上使用list.sort()
:输出:
试试这个:
其思想是迭代名字列表,将每个名字分成名字和姓氏,看看名字是否在字典中。如果是的话,查找它并将姓氏附加到姓氏列表中。如果不是,则为其分配一个唯一成员为姓氏的列表
正如Patrick Artner在评论中建议的那样,使用
defaultdict
。这个怎么样:相关问题 更多 >
编程相关推荐