如何从 Python 字典中的相同值获取多个键

How to get multiple keys from same value in Python dictionary

我想从这段代码中获取所有倒数第二小的数字。但是如果多次出现相同的数字,我只会得到一个。

示例:

输入

{'m': 9, 'k': 8, 'l': 7, 'h': 8, 'i': 100} 

产出

[100, 9, 8, 8, 7]  8 k 

需要输出

8 k   h

我要换哪里?

 n = int(input("enter a number:"))
d = {}

for i in range(n):
    keys = input() # here i have taken keys as strings
    values = int(input()) # here i have taken values as integers
    d[keys] = values
print(d)

t = d.values()
lst = list(t)
k= d.keys()
k_lst = list(k)
arr=sorted(lst,reverse=True)
print(arr)
mn=min(arr)
y=-788
for i in range(0,n):
    if arr[i]>mn:
        y = arr[i]
        
print(y)
position = lst.index(y)
print(k_lst[position])

你可以用这个简单的代码来完成:

second_lowest_value = sorted(set(d.values()))[1]
print(second_lowest_value, end=' ')
for key, value in d.items():
    if value == second_lowest_value:
        print(key, end=' ')

你甚至可以在一行中完成,但我把它分开了,这样你就可以看到发生了什么。可能你甚至不需要最后一行的 list()...

inp ={'m': 9, 'k': 8, 'l': 7, 'h': 8, 'i': 100}

second_low_val = sorted(set(inp.values()))[1]
res = list(filter(lambda x : x[1] == second_low_val, inp.items()))

## res:
# [('k', 8), ('h', 8)]

然后你可以用这个列表做任何你想做的事...