Python - вернуть первый N ключ: значение пары из dict - PullRequest
67 голосов
/ 01 ноября 2011

Рассмотрим следующий словарь, d:

d = {'a': 3, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

Я хочу вернуть первые N пар ключ-значение из d (N <= 4 в этом случае). Какой самый эффективный способ сделать это? </p>

Ответы [ 12 ]

0 голосов
/ 12 сентября 2017

Словарь не поддерживает порядок, поэтому, прежде чем выбирать пары из первых N ключевых значений, давайте отсортируем их.

import operator
d = {'a': 3, 'b': 2, 'c': 3, 'd': 4}
d=dict(sorted(d.items(),key=operator.itemgetter(1),reverse=True))
#itemgetter(0)=sort by keys, itemgetter(1)=sort by values

Теперь мы можем получить верхние элементы 'N': используя структуру метода, такую ​​как:

def return_top(elements,dictionary_element):
    '''Takes the dictionary and the 'N' elements needed in return
    '''
    topers={}
    for h,i in enumerate(dictionary_element):
        if h<elements:
            topers.update({i:dictionary_element[i]})
    return topers

чтобы получить 2 верхних элемента, просто используйте эту структуру:

d = {'a': 3, 'b': 2, 'c': 3, 'd': 4}
d=dict(sorted(d.items(),key=operator.itemgetter(1),reverse=True))
d=return_top(2,d)
print(d)
0 голосов
/ 01 ноября 2011

Вы можете подойти к этому несколькими способами. Если заказ важен, вы можете сделать это:

for key in sorted(d.keys()):
  item = d.pop(key)

Если заказ не имеет значения, вы можете сделать это:

for i in range(4):
  item = d.popitem()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...