排序Python列表

排序Python列表,python,python-2.7,Python,Python 2.7,我有一个列表,它当前按键(a、B、C)排序。该值是密钥在文件中出现的次数计数。代码给出如下结果: 14 A 157 B 17 C ... 14 A 17 C 157 B 我需要颠倒这个顺序。我想按值而不是键进行排序,因此如下所示: 14 A 157 B 17 C ... 14 A 17 C 157 B 我已经阅读并尝试了在这里和谷歌上可以找到的所有文档。我不认为这太复杂,但我想得太多了 是否有一个简单的解决方案来读取按数字排序的值?而且每次我尝试按值排序时,它都会说“int或str不可调

我有一个列表,它当前按键(a、B、C)排序。该值是密钥在文件中出现的次数计数。代码给出如下结果:

14 A
157 B
17 C
...
14 A
17 C
157 B
我需要颠倒这个顺序。我想按值而不是键进行排序,因此如下所示:

14 A
157 B
17 C
...
14 A
17 C
157 B
我已经阅读并尝试了在这里和谷歌上可以找到的所有文档。我不认为这太复杂,但我想得太多了

是否有一个简单的解决方案来读取按数字排序的值?而且每次我尝试按值排序时,它都会说“int或str不可调用”。我不明白这是什么意思

下面是我的一些代码:

lst = list()
for key, val in counts.items():
    lst.append((key, val))
lst.sort()    

for key, val in lst:
   print val, key

sort()
key
参数允许您指定排序键

您可以使用:

lst.sort(key=lambda (k,v):v)
或者,相当于

lst.sort(key=operator.itemgetter(1))

列表。排序
接受可选的
参数

>>> counts = {
...     'A': 14,
...     'B': 157,
...     'C': 17,
... }
>>>
>>> lst = counts.items()
>>> lst.sort(key=lambda x: x[1]) # x[1] => count
>>> for key, val in lst:
...     print val, key
...
14 A
17 C
157 B
根据:

sort()
方法采用可选参数来控制比较

指定一个参数的函数,用于提取 每个列表元素的比较键:key=str.lower。默认值 价值是零

这是可行的,假设

import operator
for key, val in counts.items():
  lst.append((key, val))
# lst should be like this :
# lst = [('A',14), ('B',157), ('C',17), ('D',12), ('E',189)]
sorted_lst = sorted(set(lst), key=operator.itemgetter(1))
print sorted_lst

查看列表方法
排序
和参数
。谢谢。我也试过了。我对sorted()和sort()也有问题。如果我用list、tuple或dictionary来表达这个概念,会有什么不同吗?一种方法比另一种更受欢迎吗?非常感谢您对NPE的帮助。我真的很感激。第一条建议很有效。然而,我不知道我是否完全理解了这句话的意思。你能解释一下使用的lambda和:v的语法吗?谢谢falsetru,这个解决方案也可以。您能解释一下lst.sort(key=lambda x:x[1])的行和语法吗?这个怎么读?[1]表示值在列表中的位置吗?@MariaGosur,
lambda
是一种匿名函数
lambda x:x[1]
是一个返回所传递参数的第二项的函数<代码>x这是列表中的每一项。啊,好的。我在简要概述中了解到这一点。我不得不花更多的时间在实践中研究lambda,尽管我已经模糊地使用了它。这在本质上是有道理的。谢谢你的解释。这帮了大忙。我还是习惯于堆叠溢出。我不得不开一个新帐户,失去了所有的代表积分。我很难接受答案,但我喜欢你的答案!:)谢谢你,杰姆斯。我还没有深入研究python导入,但我将进一步研究它。我感谢并珍惜每个人的帮助!