python - 对于以字符串为键、以类对象为值的 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'
如何更改我的代码,以便我可以获得具有最低“值”属性的值的键?
解决方案
解决方案:
尝试改变:
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
推荐阅读
- javascript - 如何从 contenteditable span 元素的开头删除输入(换行符)?
- php - 在其他子类(同一个父类)中使用父母子方法
- gnuplot - 将 x 值转换为分钟或小时
- python - 如何将字符串与列表项中的列表连接起来?
- solr - Solr 突出显示匹配的查询词
- svn - 通过 Web 界面进行 VisualSVNServer 问题验证
- java - 无法通过java应用程序连接到数据库mysql
- python - Python pandas UIPath - 列表分配索引超出范围
- php - 发送视频到服务器
- weebly - 在 Weebly 中编辑页面的 HTML