Python字典,值键映射
我有一个python字典,看起来像这样Python字典,值键映射,python,Python,我有一个python字典,看起来像这样{3:[2,3,4,5],4:[3,6,7,8]}我需要将字典中的值映射到键。i、 e{2:[3],3:[3,4],4:[3],5:[3],6:[4],7:[4],8:[4]} 我怎样才能做到这一点呢?循环遍历dict和每个值列表以构建新结构。您可以使用(或a)保存一些样板代码: data = {3: [2, 3, 4, 5], 4: [3, 6, 7, 8]} rev = {} for k, lst in data.items(): for va
{3:[2,3,4,5],4:[3,6,7,8]}
我需要将字典中的值映射到键。i、 e
{2:[3],3:[3,4],4:[3],5:[3],6:[4],7:[4],8:[4]}
我怎样才能做到这一点呢?循环遍历dict和每个值列表以构建新结构。您可以使用(或a)保存一些样板代码:
data = {3: [2, 3, 4, 5], 4: [3, 6, 7, 8]}
rev = {}
for k, lst in data.items():
for val in lst:
rev.setdefault(val, []).append(k)
rev
# {2: [3], 3: [3, 4], 4: [3], 5: [3], 6: [4], 7: [4], 8: [4]}
或
如果您在自己解决此问题时遇到特定问题,您可以在此处询问。请记住在
集合的解决方案末尾键入将结果rev
转换为dict()
?defaultdict
已经是dict
了!这样就可以充分利用它。您没有为调试打印输出编码,是吗?我不知道他/她在编码什么。我只是想避免“defaultdict(,{2:[3],3:[3,4],4:[3],5:[3],6:[4],7:[4],8:[4]})
与我期望的输出不同。”我知道初学者经常会遇到这个问题。他们越早意识到数据结构的重要性,而不是它的repr(…)
output,就越好;-)
from collections import defaultdict
rev = defaultdict(list)
for k, lst in data.items():
for val in lst:
rev[val].append(k)