Python 根据可能存在或不存在的参数对元组进行排序

Python 根据可能存在或不存在的参数对元组进行排序,python,sorting,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'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”
参数存在于所有元组中),我可以这样进行排序

loc_list.sort(key=lambda x: x[2])
按长度排序:

>>> 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)]
或:


假设“checked”不存在,那么对两个元组排序的标准是什么?城市名称?还是代码?Haidro我在想如果OP想要在第一个参数的基础上排序,如果
'checked'
字符串不存在,那么
排序(lofts,key=lambda x:x[-1]如果x[-1]='checked'否则x[0])
应该是答案。对的
>>> 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)]