как получить первое K наименьшее число в словаре - PullRequest
0 голосов
/ 06 апреля 2020

Например, у меня есть словарь

dicts["A"] = 1
dicts["B"] = 2
dicts["C"] = 3 # .....etc, 

, если я хочу получить первые 2 ключа, т.е. "A" и "B" на основе их значений, то есть 1 и 2, что я должен делать? Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020
dic={'A':1,'B':2, 'C': 3}
k = 2
[y[0] for y in sorted(dic.items(), key = lambda x: x[1])[:k]]

Последняя строка сортирует элементы словаря по ключу (x[1]), затем берет первые k элементы ([:k]) и затем извлекает только ключи (y[0]).

0 голосов
/ 06 апреля 2020

Попробуйте:

#lets say
dic={'A':2,'B':1, 'C':5}
#sorting the dict
dic = {k: v for k, v in sorted(dic.items(), key=lambda item: item[1])}

Теперь, когда словарь отсортирован, выполните его итерацию. Чтобы найти K наименьших значений:

k = K
for i in range(k):
    print([k[0] for k in dic.items()][i])

Следовательно, в скором времени:

k = K
for i in range(k):
    print([k[0] for k in {k: v for k, v in sorted(dic.items(), key=lambda item: item[1])}.items()][i])

в виде одной строки:

k = K
dic={'A':2,'B':1, 'C':5}
print('\n'.join([k[0] for k in {k: v for k, v in sorted(dic.items(), key=lambda item: item[1])}.items()][i] for i in range(k)))
...