在下面的代码中,我希望Python打印"Name: test1, Value: 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'
如何改变我的代码,使我可以得到与最低的"值"属性值的键?
解决方案:
尝试改变:
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