当我使用 set( list_a + list_b ) 它返回一个字典。集合自然返回字典吗?

Posted

技术标签:

【中文标题】当我使用 set( list_a + list_b ) 它返回一个字典。集合自然返回字典吗?【英文标题】:When i use set( list_a + list_b ) it returns a dictionary. Do sets naturally return dictionaries? 【发布时间】:2022-01-20 02:42:33 【问题描述】:

我正在做一些 Python 初学者练习,其中之一是从列表中删除重复项。我已经成功完成了,但奇怪的是它返回的是字典而不是列表。

这是我的代码。

import random  

a = []  
b = []  

for i in range(0,20):  
    n = random.randint(0,10)  
    a.append(n)  

for i in range(0,20):  
    n = random.randint(0,10)  
    b.append(n)  

print(sorted(a))  
print(sorted(b))  

c = set(list(a+b))  

print(c) 

and this is what it's spitting out

[0, 0, 1, 1, 1, 1, 2, 3, 4, 4, 6, 6, 7, 7, 7, 8, 9, 9, 10, 10]  
[0, 1, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 7, 8, 9, 9, 10, 10, 10]  
0, 1, 2, 3, 4, 6, 7, 8, 9, 10

提前致谢!

【问题讨论】:

我不是 Python 专家,但第三个(最终)打印输出对我来说并不像字典。只有值,没有键和值。 【参考方案1】:

0, 1, 2, 3, 4, 6, 7, 8, 9, 10 是一个集合,而不是字典,字典将打印为key:value, key:value, ...

试试print(type(c)),你会看到它打印的是<class 'set'>而不是<class 'dict'>

也可以试试下面的

s = 1,2,3
print(type(s))

d = 'a':1,'b':2,'c':3
print(type(d))

你会看到类型不同

【讨论】:

以上是关于当我使用 set( list_a + list_b ) 它返回一个字典。集合自然返回字典吗?的主要内容,如果未能解决你的问题,请参考以下文章

zip函数和sorted函数

python中append()与extend()方法的区别

如何将列表合并到元组列表中?

通过比较 2 个列表创建布尔列表

如果语句只保留字符

一个列表,找出只出现一次的元素