Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将正常序列字典转换为反向三元组顺序字典_Python_Python 3.x - Fatal编程技术网

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。