Python 将正常序列字典转换为反向三元组顺序字典
我想把我的字典转换成三元组顺序颠倒的字典 我的字典是Python 将正常序列字典转换为反向三元组顺序字典,python,python-3.x,Python,Python 3.x,我想把我的字典转换成三元组顺序颠倒的字典 我的字典是{1:1,3:3,5:6,6:6} 我已经尝试使用嵌套字典,但我不确定如何获得所需的输出 Dict1 = list(Dict) Dict2['Dict1'] = Dict print(Dict2) 输出应该是{1:{1:[1],3:[3]},2:{6:[5,6]}} 如果我定义一个不同的字典,我应该得到不同的三元组字典 有人能帮我吗 from collections import defaultdict orig_d = {1: 1,
{1:1,3:3,5:6,6:6}
我已经尝试使用嵌套字典,但我不确定如何获得所需的输出
Dict1 = list(Dict)
Dict2['Dict1'] = Dict
print(Dict2)
输出应该是{1:{1:[1],3:[3]},2:{6:[5,6]}}
如果我定义一个不同的字典,我应该得到不同的三元组字典
有人能帮我吗
from collections import defaultdict
orig_d = {1: 1, 3: 3, 5: 6, 6: 6}
new_d = defaultdict(list)
for k, v in orig_d.items():
new_d[v].append(k)
final_d = defaultdict(dict)
for cnt, (k, v) in sorted((len(v), (k, v)) for k, v in new_d.items()):
final_d[cnt][k] = v
print(dict(final_d))
印刷品:
{1: {1: [1], 3: [3]}, 2: {6: [5, 6]}}
很好的例子,但是你能再解释一下逻辑吗?请用逻辑解释一下我们是如何从你所拥有的
反向三重排序字典
得到答案的。虽然有一个答案是使用defualt dict,但我建议检查一下类似问题的答案:使用inv\u map.setdefault(v,[]).append(k)
并且不依赖集合中的defaultdict。