Python 在字典中对相同的键进行排序
我刚开始学习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=
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)。将项目添加到集合中,然后附加到列表中
[(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))