我想按照unicode字符串的大小排序元组列表,即元组的第一个成员。
“原始”元组看起来像这样:
A
[
[
(u'90000', 100318),
(u'21000', 58094),
(u'50000', 14695),
(u'250000', 8190),
(u'100000', 5718),
(u'40000', 4276)
]
]
处理后,我希望它看起来像这样:
乙
[
[
(u'250000', 8190),
(u'100000', 5718),
(u'90000', 100318),
(u'50000', 14695),
(u'40000', 4276),
(u'21000', 58094)
]
]
我尝试了一些不同的方法,但我无法坚持下去。
如何对 A 中的元组列表进行排序,使其像 B 一样呈现?
答案 0 :(得分:1)
以下是使用list.sort()
的互动演示。
>>> help(list.sort)
Help on built-in function sort:
sort(...)
L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
cmp(x, y) -> -1, 0, 1
内置帮助非常有用,但有关consult the python documentation所需参数的更完整说明
cmp指定两个参数(可迭代元素)的自定义比较函数,它应返回负数,零或正数,具体取决于第一个参数是否被认为小于,等于或大于第二个参数:cmp = lambda x,y:cmp(x.lower(),y.lower())。默认值为None。
key指定一个参数的函数,该函数用于从每个列表元素中提取比较键:key = str.lower。默认值为None(直接比较元素)。
reverse是一个布尔值。如果设置为True,则对列表元素进行排序,就好像每个比较都已反转一样。
继续:
>>> l = [[(u'90000', 100318),(u'21000', 58094),(u'50000', 14695),(u'250000', 8190),(u'100000', 5718),(u'40000', 4276)]]
>>> l[0].sort(key=lambda x:int(x[0]),reverse=True)
>>> l
[[(u'250000', 8190), (u'100000', 5718), (u'90000', 100318), (u'50000', 14695), (u'40000', 4276), (u'21000', 58094)]]
答案 1 :(得分:0)
由于内部列表,您需要挖掘下一层=> A [0]
然后使用带键和排序功能的排序功能反过来帮助你实现目标
list.sort(A[0], key= lambda x: int(x[0]), reverse=True)