2014-02-06 24 views
1

我含有S的元組這樣排序元組可能存在或不

[(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參數元組移到top.Problem列表是第三個參數"checked"不得存在於所有的元組中,但只存在於選定的元組中。

如果我的元組的長度是一致的("checked"參數存在於所有的元組),我可以做的排序是這樣

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

如果'checked'不存在,那麼排序兩個元組的標準是什麼?城市名?或代碼? –

回答

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)] 
+0

Haidro我在想,如果OP想根據第一個參數進行排序,如果'checked'字符串不存在然後'排序(lofts,key = lambda x:x [-1] if x [-1] == 'checked'else x [0])'應該回答。正確? –