基于可能存在与否的参数对元组进行排序

时间:2014-02-06 07:06:46

标签: python sorting

我有像这样的元组列表

 [(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参数的元组移到顶部。问题是第3个参数"checked"可能不存在于所有元组中,但仅存在于选定的元组中。

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

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

1 个答案:

答案 0 :(得分:3)

按长度排序:

>>> 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)]
相关问题