у меня есть словарь имен и количество раз имена появляются в телефонной книге:Нового ДИКТ верхних значений п (и ключи) из словаря (Python)
names_dict = {
'Adam': 100,
'Anne': 400,
'Britney': 321,
'George': 645,
'Joe': 200,
'John': 1010,
'Mike': 500,
'Paul': 325,
'Sarah': 150
}
Предпочтительно без использования sorted()
я хотите перебрать словарь и создать новый словарь, который имеет пять основных имен только:
def sort_top_list():
# create dict of any 5 names first
new_dict = {}
for i in names_dict.keys()[:5]:
new_dict[i] = names_dict[i]:
# Find smallest current value in new_dict
# and compare to others in names_dict
# to find bigger ones; replace smaller name in new_dict with bigger name
for k,v in address_dict.iteritems():
current_smallest = min(new_dict.itervalues())
if v > current_smallest:
# Found a bigger value; replace smaller key/ value in new_dict with larger key/ value
new_dict[k] = v
# ?? delete old key/ value pair from new_dict somehow
я, кажется, чтобы быть в состоянии создать новый словарь, который получает новую пару ключ/значение, когда мы перебираем names_dict и найти имя/счет, который выше, чем у нас в ne w_dict. Однако я не могу понять, как удалить меньшие из new_dict после того, как мы добавим более крупные из names_dict.
Есть ли лучший способ - без необходимости импортировать специальные библиотеки или использовать sorted()
- для итерации через dict и создания нового dict из лучших N ключей с самыми высокими значениями?
Есть ли какая-то особая причина, по которой вы не хотите использовать 'sorted'? –
Это просто упражнение. Я знаю, что сортировка используется тонна, но я хотел посмотреть, возможно ли это без каких-либо дополнительных материалов, таких как отсортированный (словарь-итератор, если он прекрасен). Я видел некоторые ответы на подобные вопросы на SO, но они используют отсортированные. – kevingduck
вы можете прокручивать диктофон (или его печатную копию) и каждый раз, пять раз, наносить наибольшее значение. Не забывайте хранить ключи каждый раз, когда вы заменяете ваш temp max. –