python - 按整数排列元组列表

标签 python tuples

我有一个元组列表,每个元组都包含有关员工的信息。

EmpList= [('1253', 'Fred'), ('889', 'Sue'), ('1389', 'Sally')]

我想按员工编号升序排列。使用排序,我的第一个倾向,是行不通的,因为数字不是整数。因此

sorted(EmpList)
[('1253', 'Fred'), ('1389', 'Sally'), ('889', 'Sue')]

当我想要的时候

[('889', 'Sue'), ('1253', 'Fred'), ('1389', 'Sally')]

最佳答案

您可以为此使用 lambda:

a = [('1253', 'Fred'), ('1389', 'Sally'), ('889', 'Sue')]
b = sorted(a, key=lambda a: int(a[0]))

你的案例

>>> EmpList = [('1253', 'Fred'), ('889', 'Sue'), ('1389', 'Sally')]
>>> b = sorted(a, key=lambda EmpList: int(EmpList[0]))
>>> b
[('889', 'Sue'), ('1253', 'Fred'), ('1389', 'Sally')]

要获得反转的值,您可以这样做:

>>> EmpList = [('1253', 'Fred'), ('889', 'Sue'), ('1389', 'Sally')]
>>> b = sorted(a, key=lambda EmpList: int(EmpList[0]), reversed=True)
>>> b
[('1389', 'Sally'), ('1253', 'Fred'), ('889', 'Sue')]

注意事项

请注意将 a[0] 转换为 int 的重要性。这是因为如果您不将其转换为 int,python 将对字符串进行比较:

>>> '889' > '1253'
True

这是因为当 python 比较每个字符串的第一个字符时,'8' 大于 '1',因此 '889' > '1253' 的计算结果为 True。

这绝对不是您想要的。因此,要正确执行此操作,请将其转换为 int

关于python - 按整数排列元组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23038765/

相关文章:

Python 2.7-MySQL : Query value won't change while running on infinite loop

list - 将列表转换为嵌套元组 Haskell

.NET 元组和等于性能

python - 如何避免 Python 文件输入缓冲

python - 命令 "python setup.py egg_info"失败,错误代码 1 - 在 OSX 中安装 apache-beam SDK

python - 根据多个条件替换 groupby 中的值

python - 更新 Django 中的字段不起作用

scala - 光滑的错误 : type TupleXX is not a member of package scala (XX > 22)

c# - 元组列表 <double,double>。逗号而不是 double 值中的点

syntax - 元组参数声明和赋值奇怪