私はこのような乗客の辞書を持っている問題が持ってきた:
THISを希望する:その後、残りの部分はdictをソートする...効率的な方法ですか?
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'}
}
をそして、私は排他的な最初でこのアイテムのような結果を印刷する必要がありますOUTPUT
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']
が唯一の方法はそれを行うためにということですか、それを達成するために、より明確に/効率的な方法がありますか?もう一度、2番目の段落は望ましい出力です。
あなたがやろうとしたかを説明しませんでした:行うには、あなたが
filter()
組み込みfuncitonを使用することができ、二つの別々のリストを作成することです。どのようにデータを並べ替えるかを明確に説明し、実際に何をしようとしているのかをリバースエンジニアリングする必要はありません。 –2番目のコードブロックでは十分ではありませんか?私はとにかくそれを編集します。 –
あなたはOrderedDictしようとすることができますhttps://pymotw.com/2/collections/ordereddict.html – arcticless