当前位置:  开发笔记 > 编程语言 > 正文

pythonic的方式来扭转字典值是列表?

如何解决《pythonic的方式来扭转字典值是列表?》经验,为你挑选了1个好方法。

我有一本看起来像这样的字典:

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”的方式来做到这一点。有什么建议么?



1> Brad Solomon..:

这非常适合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

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有