从字典中收集的长度值列表的顺序不正确
List of length values gathered from a dictionary is in incorrect order
这是我的代码:
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)
输出:
{1: 'ghost', 2: 'habanero', 3: 'cayenne'}
set([8, 5, 7])
我想在字典中排列时分别打印项目值的长度,但它们以任意方式附加到集合中。它应该是这样的:
set([5, 8, 7])
集没有定义的顺序。如果不编写自己的打印函数,这是不可能的,例如可以使用 sorted
.
A set object is an unordered collection of distinct hashable objects.
https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset
如果您想保持顺序,您可能需要使用普通列表。需要以其他方式确保唯一性,例如在更新列表之前检查列表。
没有理由在这里制作 set
除非你想丢弃重复项(set
s 这样做),这将导致像 'spicy'
这样的东西没有记录值(与 'ghost'
的长度相同)。如果你想打印长度,我建议直接从原始词典中打印。然而,字典是任意排序的,就像 set
s 一样,所以你必须对它进行排序:
>>> 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
这是我的代码:
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)
输出:
{1: 'ghost', 2: 'habanero', 3: 'cayenne'}
set([8, 5, 7])
我想在字典中排列时分别打印项目值的长度,但它们以任意方式附加到集合中。它应该是这样的:
set([5, 8, 7])
集没有定义的顺序。如果不编写自己的打印函数,这是不可能的,例如可以使用 sorted
.
A set object is an unordered collection of distinct hashable objects.
https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset
如果您想保持顺序,您可能需要使用普通列表。需要以其他方式确保唯一性,例如在更新列表之前检查列表。
没有理由在这里制作 set
除非你想丢弃重复项(set
s 这样做),这将导致像 'spicy'
这样的东西没有记录值(与 'ghost'
的长度相同)。如果你想打印长度,我建议直接从原始词典中打印。然而,字典是任意排序的,就像 set
s 一样,所以你必须对它进行排序:
>>> 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