Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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,我刚开始学习python,想知道是否可以配对两个相同的键 例如: my_dict= {1:a,3:b,1:c} 我想做一个新的口述,像这样: new_dict= {1:{a,c},3:{b}} 感谢您的帮助您不能有相同的键,这是字典的定义。一旦再次添加相同的键,上一个条目就会被删除在python中不能有重复的字典键 Python中的字典或任何可哈希类型都不允许重复键。如果在字典中发现两个重复的键,则字典中最远的键将保持不变。这种行为可以直接观察到: >>> my_dict=

我刚开始学习python,想知道是否可以配对两个相同的键

例如:

my_dict= {1:a,3:b,1:c}
我想做一个新的口述,像这样:

new_dict= {1:{a,c},3:{b}}

感谢您的帮助

您不能有相同的键,这是字典的定义。一旦再次添加相同的键,上一个条目就会被删除

在python中不能有重复的字典键

Python中的字典或任何可哈希类型都不允许重复键。如果在字典中发现两个重复的键,则字典中最远的键将保持不变。这种行为可以直接观察到:

>>> my_dict= {1:'a',3:'b',1:'c'}
>>> my_dict
{1: 'c', 3: 'b'}
>>> my_dict= {1:'c',3:'b',1:'a'}
>>> my_dict
{1: 'a', 3: 'b'}
>>> 
dict()
s的Python文档涉及到这个问题:

最好将字典视为一组无序的键:值对,,要求键是唯一的(在一个字典中)。[…]


(强调我的)

据我所知,你试图把这两本词典结合起来。假设在一个字典中不能有相同的键,我将假设您有两个不同的字典,您希望组合以获得组合

例:

这种结合将产生:

{'a':{1},'b':{2},'c':{3,4},'d':{4},'e':{6}

您可以使用以下示例:

from itertools import chain
from collections import defaultdict

dic1 = {'A': 1, 'B': 2, 'C': 3}
dic2 = {'C': 4, 'D': 5, 'E': 6}

dic = defaultdict(set)

for k, v in chain(dic1.items(), dic2.items()):
    dic[k].add(v)

print(dict(dic))
需要注意的是:

  • “dic”不完全是dict(),它是“defaultdict”类型,但您可以使用dict(dic)来实现它
  • 您可以在defaultdict()参数中使用list,而不使用set,并使用字典:

    {'a':[1],'b':[2],'c':[3,4],'d':[4],'e':[6]}

    但要做到这一点,将在for循环中使用dic[k].append(v)。将项目添加到集合中,然后附加到列表中


原始dict是非法的(请尝试),但您所需的结果是可能的。您可以将每个dict条目设置为一个列表,并使其包含所需的值。您应该阅读有关哈希的内容。以及它如何使相同的键不可能。首先,字典中不能有重复的键。您的输入需要不同,例如
[(1,'a'),(3,'b'),(1,'c')]
和您的输出
{1:['a','c'],3:['b']}
。有关如何做到这一点的想法,请参阅。
from itertools import chain
from collections import defaultdict

dic1 = {'A': 1, 'B': 2, 'C': 3}
dic2 = {'C': 4, 'D': 5, 'E': 6}

dic = defaultdict(set)

for k, v in chain(dic1.items(), dic2.items()):
    dic[k].add(v)

print(dict(dic))