gpt4 book ai didi

python - 按整数排列元组列表

转载 作者:太空宇宙 更新时间:2023-11-03 14:24:13 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com