我发现自己经常用Python中的平面列表创建索引列表。这是一个非常常见的任务,我想知道是否有一个标准的实用程序,我应该使用它。在
上下文是这样的:给定一个数组,我需要使用一些键来创建较小数组的dict。在
例如:["Andy","Alice","Bob","Beth","Charlie"]
变成{"A":["Andy","Alice"],"B":["Bob","Beth"],"C":["Charlie"]}
我的解决方案如下:
def make_index(data,key,value=lambda x:x):
d={}
for item in data:
k = key(item)
v = value(item)
try: d[k].append(v)
except KeyError: d[k]=[v]
return d
这很简单,但我是不是在重新发明一些在其他地方实施得更好的东西呢?在
您可以用^{} 来做同样的事情:
使用
defaultdict
比使用.setdefault()
快,后者是另一个选择。在不知道为什么
itertools
答案被删除,但我自己正在写一个:相关问题 更多 >
编程相关推荐