如何在Python字典中逐个弹出大值?

时间:2012-11-22 07:42:28

标签: python dictionary

刚离开具有最小值的密钥,我无法使用min()函数。

移动OP尝试的代码: -

for i in key: 
    if dictionary[i]<dictionary[key]: 
        dictionary.pop(key) 
    elif dictionary[i]==dictionary[key]: 
        print (dictionary[i])

来自其他评论的代码:

dictionary={'A': 3, 'B': -2, 'C': -1, 'D': -3} 
for key in dictionary: 
    print ("Keys and values>", key,end= '') 
    print (dictionary[key]) 
    print (dictionary) 
    for i in key: 
        if dictionary[i]<dictionary[key]: 
            dictionary.pop(key) 
        elif dictionary[i]==dictionary[key]: 
            print ("The minimum is",dictionary[i])

2 个答案:

答案 0 :(得分:0)

你可以尝试一下。它使用any函数将每个键的值与除其自身之外的所有其他值进行比较。如果找到的any值小于该值,则弹出key

>>> my_dict = {1: 2, 2: 3, 3: 4}
>>> for key, value in my_dict.items():
        if any(value > value1 for key1, value1 in my_dict.items() if key1 != key):
            my_dict.pop(key)


3
4
>>> my_dict
{1: 2}
如果传递给any的{​​{1}}中的至少一个值为True,则

list函数会返回True

例如: -

any([0, 0, False, True])   # Will print True
any([0, 0, False, False])  # Will print False

更新: -

如果您不想使用any函数,可以将any函数的for循环移到外面,并仅在该循环中进行测试: -

my_dict = {1: 2, 2: 3, 3: 4}

for key, value in my_dict.items():
    for key1, value1 in my_dict.items():

        if key1 != key and value > value1:
            my_dict.pop(key)

print my_dict

答案 1 :(得分:0)

您可以使用dict.items()来获得最小功能。

my_dic = {...}
print min(my_dic.item(), key = lambda x: x[1])[0]