首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中创建字典时,如何处理重复值?

在Python中创建字典时,如何处理重复值?
EN

Stack Overflow用户
提问于 2018-08-03 04:05:27
回答 1查看 321关注 0票数 0

我是python的初学者,我想创建一个简单的程序,使用压缩函数将list1中的每个元素分配给list2中的相应元素。

代码语言:javascript
复制
list1=[1,2,3,4,1]
list2=[2,3,4,5,6]
dictionary=dict(zip(list1,list2))
print(dictionary)

但是,因为我在list1中有一个重复值,所以字典显示以下结果:

代码语言:javascript
复制
{1: 6, 2: 3, 3: 4, 4: 5}

由于1在list1中是重复的值,因此仅显示1:6,而不显示1:2。我如何更改我的代码,以使重复的值被考虑在内,并以其各自的顺序显示?

{1: 2, 2: 3, 3: 4, 4: 5, 1: 6}

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-08-03 04:24:15

使用Python是不可能的,因为这违背了dict的定义--key必须是唯一的。评论解释了为什么会这样。

然而,还有许多其他方法可能对你有用,可以达到几乎相同的效果。一种简单但不是特别有用的方法是:

代码语言:javascript
复制
almost_dictionary = list(zip(list1, list2))

这给出了结果

代码语言:javascript
复制
[(1, 2), (2, 3), (3, 4), (4, 5), (1, 6)]

它有时可以像字典一样使用。然而,这可能不是您想要的。更好的方法是使用一个dictdefaultdict,它为每个键保存一个与该键相关的所有值的listdefaultdict更容易使用,但更难设置:

代码语言:javascript
复制
dictionary = defaultdict(list)
for k, v in zip(list1, list2):
    dictionary[k].append(v)
print(dictionary)

这给出了结果

代码语言:javascript
复制
defaultdict(<class 'list'>, {1: [2, 6], 2: [3], 3: [4], 4: [5]})

您可以看到,每个键都有每个值--这些值都在列表中。dictionary[1]的值为[2, 6],因此您可以同时使用这两个值。

选择哪种方法取决于您使用字典的目的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51661375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档