我怎么能得到一个Python字典的一个最低属性值的对象的键,一个字符串作为键,一个类对象作为值? &g



在下面的代码中,我希望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

最新更新