CtrlCV工程師 发表于 2022-1-21 14:50:51

set()顺序问题

本帖最后由 CtrlCV工程師 于 2022-1-21 14:52 编辑

>>> favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
    }
>>> favorite_languages.values()
dict_values(['python', 'c', 'ruby', 'python'])
>>> set(favorite_languages.values())               
{'c', 'python', 'ruby'}
为什么我用values()输出的顺序和用set()输出的顺序不一样?

Twilight6 发表于 2022-1-21 15:44:34


set 是创建集合对象函数,集合有三大特性:确定性、互异性、无序性

确定性指的是 一个元素 要么属于这个集合,要么不属于

互异性指同一集合中的元素都互不相同

无序性指集合中的元素是无序的

所以虽然打印出来显示上是有顺序的,这与 Python 此时的运行环境与开发者、操作系统可能都关系,也有可能只是因为这样的打印顺序也许更有效率

傻眼貓咪 发表于 2022-1-21 15:45:21

favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
    }

print(list(favorite_languages.values())) # 有序
print(tuple(favorite_languages.values())) # 有序
print(set(favorite_languages.values())) # 无序
页: [1]
查看完整版本: set()顺序问题