首页 > 解决方案 > 对于以字符串为键、以类对象为值的 Python 字典,如何获取具有最低属性值的对象的键?

问题描述

在下面的代码中,我希望 Python 打印“名称:test1,值:4”:

from operator import attrgetter

class Test:
    def __init__(self, name, value):
        self.name = name
        self.value = value
        
test1 = Test("test1",4)
test2 = Test("test2",6)
testDictionary = {}
testDictionary["test1"] = test1
testDictionary["test2"] = test2

res = min(testDictionary, key=attrgetter('value'))
print("Name: ",res.name, " Value: ",res.value)

但是我得到了这个错误:

AttributeError: 'str' object has no attribute 'value'

如何更改我的代码,以便我可以获得具有最低“值”属性的值的键?

标签: pythonpython-3.x

解决方案


解决方案:

尝试改变:

res = min(testDictionary, key=attrgetter('value'))

至:

res = min(testDictionary.values(), key=attrgetter('value'))

解释:

只是testDictionary从键中获取最小值,例如:

>>> d = {'a': 1, 'b': 2}
>>> d
{'a': 1, 'b': 2}
>>> list(d)
['a', 'b']
>>> list(d.values())
[1, 2]
>>> 

完整代码:

from operator import attrgetter

class Test:
    def __init__(self, name, value):
        self.name = name
        self.value = value
        
test1 = Test("test1",4)
test2 = Test("test2",6)
testDictionary = {}
testDictionary["test1"] = test1
testDictionary["test2"] = test2

res = min(testDictionary.values(), key=attrgetter('value'))
print("Name: ", res.name, " Value: ", res.value)

输出:

Name:  test1  Value:  4

推荐阅读