2017-06-05 66 views
0

我需要創建一個字典值列表,根據值是否爲空進行排序,我的嘗試獲得所需的輸出,但必須在字典上迭代兩次,我想知道是否有一種方法可以只迭代一次嗎?我的實際字典有像50,000個值,只是迭代反覆做時Python創建基於屬性的排序列表

d = {'id1':[], 
    'id2':[1], 
    'id3':[1]} 
l = [v for v in d.values() if v]+[v for v in d.values() if not v] 
print (l) 

這是我想要的輸出一旦將節省一些時間:

[[1], [1], []] 

回答

3

您可以相對於排序,長度:

l = sorted(d.values(), key=len, reverse=True) 
1

我建議SortedContainers:SortedList,SortedDict和SortedSet類型的快速,純Python實現。

from sortedcontainers import SortedList 
d = {'id1':[], 
    'id2':[1], 
    'id3':[1]} 

res=SortedList(d.values())