首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从字典中收集的长度值列表的顺序不正确

从字典中收集的长度值列表的顺序不正确
EN

Stack Overflow用户
提问于 2015-07-31 23:36:24
回答 2查看 215关注 0票数 0

这是我的密码:

代码语言:javascript
复制
chile_ranks = {'ghost': 1, 'habanero': 2, 'cayenne': 3}
rank_dict = {rank: name for name, rank in chile_ranks.items()}
chile_len_set = {len(name) for name in rank_dict.values()}
print(rank_dict)
print(chile_len_set)

输出:

代码语言:javascript
复制
{1: 'ghost', 2: 'habanero', 3: 'cayenne'}
set([8, 5, 7])

我希望在字典中分别打印项值的长度,但它们以任意方式附加到集合中。它应该是:

代码语言:javascript
复制
set([5, 8, 7])
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-31 23:48:45

没有理由在这里创建一个set,除非您想丢弃重复的( sets所做的),这将导致'spicy'之类的东西没有记录值(与'ghost'相同的长度)。如果您想打印长度,我建议直接从原始字典这样做。但是,字典是任意排序的,就像set的排序一样,因此您必须对其进行排序:

代码语言:javascript
复制
>>> chile_ranks = {'ghost': 1, 'habanero': 2, 'cayenne': 3}
>>> rank_dict = {rank: name for name, rank in chile_ranks.items()}
>>> chile_len_set = {len(name) for name in rank_dict.values()}
>>> print(rank_dict)
{1: 'ghost', 2: 'habanero', 3: 'cayenne'}
>>> print(chile_len_set)
{8, 5, 7}
>>> print(*(len(rank_dict[key]) for key in sorted(rank_dict)))
5 8 7
票数 0
EN

Stack Overflow用户

发布于 2015-07-31 23:40:42

集合没有定义的顺序。如果不编写自己的打印函数,这是不可能的,例如,可以使用sorted

set对象是一个无序集合,它由不同的可哈斯对象组成。 https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset

如果要维护顺序,则可能要使用常规列表。需要以其他方式确保唯一性,例如在更新列表之前检查它。

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

https://stackoverflow.com/questions/31756699

复制
相关文章

相似问题

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