我有一个看起来像这样的列表:
[['Tom', 'Dick'], ['Harry', 'John', 'Mike'], ['Bob']]
我想把它变成一个字典,其中每个键是一个名称,每个值是一个对应于其子列表在列表中的位置的数字:
{'Tom': 0, 'Dick': 0, 'Harry': 1, 'John': 1, 'Mike': 1, 'Bob': 2}
我尝试了各种列表推导式,但我无法让它与嵌套列表一起工作。我可以使用嵌套循环,如下所示:
names = [['Tom', 'Dick'], ['Harry', 'John', 'Mike'], ['Bob']]
names_dict = {}
for i, name_sublist in enumerate(names):
for name in name_sublist:
names_dict[name] = i
但我怀疑有一种更短、更优雅的方式来做到这一点。
最佳答案
names_dict = dict((name,index)
for index,lst in enumerate(names)
for name in lst)
例子:
>>> names = [['Tom', 'Dick'], ['Harry', 'John', 'Mike'], ['Bob']]
>>> names_dict = dict((name,index)
... for index,lst in enumerate(names)
... for name in lst)
>>> names_dict
{'Tom': 0, 'Mike': 1, 'Dick': 0, 'Harry': 1, 'Bob': 2, 'John': 1}
关于 python 高尔夫 : what's the most concise way of turning this list of lists into a dictionary:,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/534608/