鱼C论坛

 找回密码
 立即注册
查看: 794|回复: 2

[已解决]set()顺序问题

[复制链接]
发表于 2022-1-21 14:50:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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()输出的顺序不一样?
最佳答案
2022-1-21 15:44:34

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

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

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

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

所以虽然打印出来显示上是有顺序的,这与 Python 此时的运行环境与开发者、操作系统可能都关系,也有可能只是因为这样的打印顺序也许更有效率
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-21 15:44:34 | 显示全部楼层    本楼为最佳答案   

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

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

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

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

所以虽然打印出来显示上是有顺序的,这与 Python 此时的运行环境与开发者、操作系统可能都关系,也有可能只是因为这样的打印顺序也许更有效率
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-21 15:45:21 From FishC Mobile | 显示全部楼层
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())) # 无序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 09:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表