需要按值排序,但将 0 移到末尾
Need to sort this by the value but move the 0 to the end
它目前看起来像这样未排序。
[('391', '0'), ('411', '0.00'), ('174', '4'), ('734', '8.753'),('512', '6.3'),('700', '5.34'),]
如果可能的话,我需要让它看起来像这样。
[('174', '4'),('700', '5.34'),('512', '6.3'),('734', '8.753'),('391', '0'),('411', '0.00')]
通过简单的函数获取密钥:
>>> lst = [('391', '0'), ('411', '0.00'), ('174', '4'), ('734', '8.753'),('512', '6.3'),('700', '5.34'),]
>>> def get_key(x):
... f = float(x[1])
... return f if f else float('inf')
...
>>> sorted(lst, key=get_key)
[('174', '4'), ('700', '5.34'), ('512', '6.3'), ('734', '8.753'), ('391', '0'), ('411', '0.00')]
您可以使用 .sort()
方法完成此操作,首先正常排序,然后排序,以便将等于 0 的值移动到末尾。
my_list = [('391', '0'), ('411', '0.00'), ('174', '4'), ('734', '8.753'),('512', '6.3'),('700', '5.34'),]
my_list.sort(key=lambda x: x[1])
my_list.sort(key=lambda x: float(x[1]) == 0)
print(my_list)
# Output:
# [('174', '4'), ('700', '5.34'), ('512', '6.3'), ('734', '8.753'), ('391', '0'), ('411', '0.00')]
它目前看起来像这样未排序。
[('391', '0'), ('411', '0.00'), ('174', '4'), ('734', '8.753'),('512', '6.3'),('700', '5.34'),]
如果可能的话,我需要让它看起来像这样。
[('174', '4'),('700', '5.34'),('512', '6.3'),('734', '8.753'),('391', '0'),('411', '0.00')]
通过简单的函数获取密钥:
>>> lst = [('391', '0'), ('411', '0.00'), ('174', '4'), ('734', '8.753'),('512', '6.3'),('700', '5.34'),]
>>> def get_key(x):
... f = float(x[1])
... return f if f else float('inf')
...
>>> sorted(lst, key=get_key)
[('174', '4'), ('700', '5.34'), ('512', '6.3'), ('734', '8.753'), ('391', '0'), ('411', '0.00')]
您可以使用 .sort()
方法完成此操作,首先正常排序,然后排序,以便将等于 0 的值移动到末尾。
my_list = [('391', '0'), ('411', '0.00'), ('174', '4'), ('734', '8.753'),('512', '6.3'),('700', '5.34'),]
my_list.sort(key=lambda x: x[1])
my_list.sort(key=lambda x: float(x[1]) == 0)
print(my_list)
# Output:
# [('174', '4'), ('700', '5.34'), ('512', '6.3'), ('734', '8.753'), ('391', '0'), ('411', '0.00')]