Sort Tuple of chemical and coeff
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
How to sort (list/tuple) of lists/tuples?
号
我有一个元组列表,我想按该元组中第二个值的数字顺序排序。我正在处理的列表示例如下:
1 | [('H2O', '6'), ('O2', '4')] |
因此,在这种情况下,我想要的是:
1 | [('O2','4'),('H2O',6')] |
号
我知道这是很基本的,我只是想弄明白。
使用
1 | mylist.sort(key = lambda x: int(x[1])) |
。
这将把元组中的第二个元素转换为整数,并按这些整数排序。
因为元组在第二个元素中包含数字,所以在元组中存储数字比在字符串中存储数字更有意义。如果这样做,可以对以下内容进行排序:
1 2 | import operator mylist.sort(key = operator.itemgetter(1)) |
。
1 2 3 4 | >>> l = [('H2O', '6'), ('O2', '4')] >>> l.sort(key = lambda x: int(x[1])) >>> l [('O2', '4'), ('H2O', '6')] |
。
您还可以使用
1 2 3 4 | >>> sorted(l, key=lambda x: int(x[1])) [('O2', '4'), ('H2O', '6')] >>> l [('H2O', '6'), ('O2', '4')] # Original list unmodified |
如果我们想遍历排序列表,通常使用
您需要使用
你可以使用
1 2 3 4 5 6 | In [1]: import operator In [2]: chem = [('H2O', '6'), ('O2', '4')] In [3]: sorted(chem, key=operator.itemgetter(1)) Out[3]: [('O2', '4'), ('H2O', '6')] |
或者一个简单的函数:
1 2 | In [4]: sorted(chem, key=lambda x: x[1]) Out[4]: [('O2', '4'), ('H2O', '6')] |
号
编辑:Interjay是对的:最好将第二项转换为数字:
1 | sorted(chem, key=lambda x: int(x[1])) |
否则,它们将按字母顺序排序。
你得先去埃多克斯1〔11〕。现在使用
1 | list.sort(key=lambda x: x[1]) |
为了更快,
1 | list.sort(key=operator.itemgetter(1)) |
。