Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何表示已排序的词典?_Python_Sorting_Dictionary - Fatal编程技术网

Python 如何表示已排序的词典?

Python 如何表示已排序的词典?,python,sorting,dictionary,Python,Sorting,Dictionary,我试图按值对字典进行排序,我看到了以下帖子: 我只需要在列表中获取值较大的键,而不是在元组中,所以我写了这个(看起来有点笨拙)。 但如果两个键的值相同,我需要按字母表的方式对它们进行排序 这就是我试图做的: import operator final_sort=[] sorted_x = sorted(x.items(), key=operator.itemgetter(1)) for item in sorted_x[::-1]: final_sort.append(item[0])

我试图按值对字典进行排序,我看到了以下帖子:

我只需要在列表中获取值较大的键,而不是在元组中,所以我写了这个(看起来有点笨拙)。 但如果两个键的值相同,我需要按字母表的方式对它们进行排序

这就是我试图做的:

import operator
final_sort=[]
sorted_x = sorted(x.items(), key=operator.itemgetter(1))
for item in sorted_x[::-1]:
    final_sort.append(item[0])
但这仅适用于数值条件

例如:

inp : x = {'a': 2, 'b': 4, 'c': 6, 'd': 6, 'e': 0}
out : ['c', 'd', 'b', 'a', 'e']

迭代字典产生键;您可以将词典本身传递到排序后的

>>> x = {'a': 2, 'b': 4, 'c': 6, 'd': 6, 'e': 0}
>>> sorted(x, key=lambda key: (-x[key], key))
['c', 'd', 'b', 'a', 'e']

以下是我的步骤,分为两步

>>> x = {'a': 2, 'b': 4, 'c': 6, 'd': 6, 'e': 0}
>>> sorted(x.items(), key=lambda i: i[1], reverse=True)
[('c', 6), ('d', 6), ('b', 4), ('a', 2), ('e', 0)]
>>> [x[0] for x in sorted(x.items(), key=lambda i: i[1], reverse=True)]
['c', 'd', 'b', 'a', 'e']

你能给我们举一个你的dict和预期输出的例子吗?是的,我加了一个例子。谢谢您这只是按值排序,而问题指定“但是如果两个键的值相同,我需要按字母表的方式对它们进行排序。”由于字典顺序是任意的,因此当前的
'c','d'
不能保证。@TigerhawkT3,谢谢您的评论。我相应地更新了答案。非常感谢@TigerhawkT3谢谢你的推荐,这正是我要问的!无论如何,对于Python3来说,这个答案更好,因为它不允许我像他们在另一篇文章中那样解包元组。这只是按值排序,而问题指定“但是如果两个键有相同的值,我需要按字母表的方式对它们进行排序。”因为字典顺序是任意的,所以当前的
'c','d'
不能保证。