-1
我一直有這個問題,我有乘客這樣一個字典:排序字典...有效的方式來做到這一點?
passengers = {
1: {'name': 'Foo', 'lastname': 'Bar', 'exclusive': True},
2: {'name': 'John', 'lastname': 'Doe'},
3: {'name': 'Rocky', 'lastname': 'Balboa', 'exclusive': True},
4: {'name': 'Mohammed', 'lastname': 'Smith'}
}
,我需要打印這樣的項目進行獨家首創那麼剩下的結果:
這是用戶期望輸出
List of passengers:
===================
1.- Foo Bar
2.- Rocky Balboa
3.- John Doe
4.- Mohammed Smith
我試着用collections.deque
,我還沒有發現任何對我的作品,直到我想出了這個功能:
def prioritize_passengers(dictionary):
priority_list = []
normal_list = []
sorted_list = []
for key, item in dictionary.iteritems():
if 'exclusive' in item:
priority_list.append(key)
else:
normal_list.append(key)
sorted_list = priority_list + normal_list
return sorted_list
然後我用我的數據是這樣的:
# Assuming passenger is the same var as above
sorted_list = prioritize_passengers(passengers)
print "List of passengers:\n==================="
for elem in sorted_list:
passenger = passengers[elem]
print "{} {}".format(passenger['name'], passenger['lastname']
這是唯一的辦法做到這一點還是有一個更清晰/有效的方式來實現呢?再次,第二段是期望的輸出。
你沒有解釋你正在嘗試做什麼。你應該清楚地解釋你想如何分類你的數據,所以我們不需要通過你的代碼來反向設計你實際要做的事情。 –
第二塊代碼對你來說還不夠嗎?無論如何,我會編輯它。 –
你可以嘗試OrderedDict https://pymotw.com/2/collections/ordereddict.html – arcticless