我有一本看起来像这样的字典:
letters_by_number = { 1: ['a', 'b', 'c', 'd'], 2: ['b', 'd'], 3: ['a', 'c'], 4: ['a', 'd'], 5: ['b', 'c'] }
我想将其反转为如下所示:
numbers_by_letter = { 'a': [1, 3, 4], 'b': [1, 2, 5], 'c': [1, 3, 5], 'd': [1, 2, 4] }
我知道我可以通过遍历(键,值)letters_by_number
,遍历value
(这是一个列表)并将(val,key)添加到字典中的列表来做到这一点。这很麻烦,我觉得必须有一种更“ pythonic”的方式来做到这一点。有什么建议么?
这非常适合collections.defaultdict
:
>>> from collections import defaultdict >>> numbers_by_letter = defaultdict(list) >>> for k, seq in letters_by_number.items(): ... for letter in seq: ... numbers_by_letter[letter].append(k) ... >>> dict(numbers_by_letter) {'a': [1, 3, 4], 'b': [1, 2, 5], 'c': [1, 3, 5], 'd': [1, 2, 4]}
请注意,您实际上并不需要最终dict()
调用(a defaultdict
会给您可能想要的行为),但是我在此处包括了它,因为问题的结果是type dict
。