【发布时间】:2020-01-16 06:13:44
【问题描述】:
我有这个嵌套字典:
+-------------+--------------+-------------------+
| 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)
但我遇到语法错误
【问题讨论】:
-
你需要
else部分,对吧? -
第一个代码不需要 for in 循环,第二行是你唯一需要的,你看不到你从不使用循环的 k 和 v
标签: python python-3.x