基于可能存在或不存在的参数对元组排序

2024-09-30 16:28:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的元组列表

 [(u'Delhi NCR', 148, 'checked'),
  (u'New Delhi', 51),
  (u'Gurgaon', 20),
  (u'Faridabad', 18),
  (u'Ghaziabad', 17),
  (u'Greater Noida', 16),
  (u'Noida', 11, 'checked'),
  (u'Sonepat', 7),
  (u'Palwal', 5),
  (u'Gautam Buddh Nagar', 2),
  (u'Rewari', 1)]

我想把含有checked参数的元组移到顶部。问题是第三个参数"checked"可能不在所有元组中,而只在选定的元组中

如果我的元组长度是一致的("checked"参数存在于所有元组中),我可以这样做排序

loc_list.sort(key=lambda x: x[2])

Tags: 列表new参数元组greatercheckeddelhincr
1条回答
网友
1楼 · 发布于 2024-09-30 16:28:42

按长度排序:

>>> L = [(u'Delhi NCR', 148, 'checked'),
...   (u'New Delhi', 51),
...   (u'Gurgaon', 20),
...   (u'Faridabad', 18),
...   (u'Ghaziabad', 17),
...   (u'Greater Noida', 16),
...   (u'Noida', 11, 'checked'),
...   (u'Sonepat', 7),
...   (u'Palwal', 5),
...   (u'Gautam Buddh Nagar', 2),
...   (u'Rewari', 1)]
>>> print sorted(L, key=len, reverse=True)
[(u'Delhi NCR', 148, 'checked'), (u'Noida', 11, 'checked'), (u'New Delhi', 51), (u'Gurgaon', 20), (u'Faridabad', 18), (u'Ghaziabad', 17), (u'Greater Noida', 16), (u'Sonepat', 7), (u'Palwal', 5), (u'Gautam Buddh Nagar', 2), (u'Rewari', 1)]

或:

>>> sorted(L, key=lambda x: x[-1] == 'checked', reverse=True)
[(u'Delhi NCR', 148, 'checked'), (u'Noida', 11, 'checked'), (u'New Delhi', 51), (u'Gurgaon', 20), (u'Faridabad', 18), (u'Ghaziabad', 17), (u'Greater Noida', 16), (u'Sonepat', 7), (u'Palwal', 5), (u'Gautam Buddh Nagar', 2), (u'Rewari', 1)]

相关问题 更多 >