У меня есть проблема, когда у меня есть Dict пассажиров, как это:Сортировка 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'}
}
И мне нужно распечатать результаты как это изделие с эксклюзивным первым затем остальным:
Это и есть искомый ВЫВОД
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