我有一本嵌套字典:
+-------------+--------------+-------------------+
| PAK ID | License used | License available |
+-------------+--------------+-------------------+
| ASG6C1TU08I | 15 | 235 |
| HK5JQ5TFR8Z | 50 | 0 |
| 4HIZBOYUS9S | 81 | 169 |
| 4T6Y77AK1LZ | 50 | 0 |
| X2ACDW29EEH | 50 | 0 |
| W487IEVM0BD | 50 | 0 |
+-------------+--------------+-------------------+
>>> print(license_dic)
{'entry1': {'pak_id': 'ASG6C1TU08I', 'used_license': '15', 'available_license': '235'}, 'entry3': {'pak_id': 'HK5JQ5TFR8Z', 'used_license': '50', 'available_license': '0'}, 'entry5': {'pak_id': '4HIZBOYUS9S', 'used_license': '81', 'available_license': '169'}, 'entry7': {'pak_id': '4T6Y77AK1LZ', 'used_license': '50', 'available_license': '0'}, 'entry9': {'pak_id': 'X2ACDW29EEH', 'used_license': '50', 'available_license': '0'}, 'entry11': {'pak_id': 'W487IEVM0BD', 'used_license': '50', 'available_license': '0'}}
我可以使用以下方法获取“可用许可证”最大值的密钥:
for k,v in license_dic.items():
max_entry =max(license_dic, key=lambda v: license_dic[v]['available_license'])
返回:
>>entry1
我正在尝试获取“available_license”的最小非零值的密钥,在这种情况下,它应该返回“entry5”,因为“entry5具有最低的非零值”available_license
我试过:
for k,v in license_dic.items():
min_entry =min(license_dic, key=lambda v: license_dic[v]['available_license'] if key !=0)
但是我得到了一个语法错误
max/min
语句很有用李>str
类型,需要将它们解析为int
else
,比如使用10**10
(100亿)作为默认值来替换0,因为您可以使用一个丑陋的if/else
(见末尾)或使用一个布尔方式来替换or
最后你需要
丑陋的方式
相关问题 更多 >
编程相关推荐