python - 如何获取此嵌套字典中的最小非零值

标签 python python-3.x

我有这个嵌套字典:

+-------------+--------------+-------------------+
|    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'}}

我可以使用以下方法获取“可用许可证”最大值的 key :

for k,v in license_dic.items():
    max_entry =max(license_dic, key=lambda v: license_dic[v]['available_license'])

返回结果:

>>entry1

我正在尝试获取“available_license”的最小非零值的 key ,在本例中,它应该返回“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)

但是我收到语法错误

最佳答案

  1. 您绝对不需要循环,单个 max/min 语句很有用。
  2. 您正在比较 str 类型,需要将它们解析为 int
  3. 您的测试中需要一个 else,例如使用 10**10(100 亿)作为默认值来替换 0,因为您可以使用一个丑陋的if/else(见最后)或使用带有 or 的 bool 方法

最后你需要

max_entry = max(license_dic, key=lambda k: int(license_dic[k]['available_license']))
# entry1

min_entry = min(license_dic,key=lambda k:int(license_dic[k]['available_license']) or 10**10)
# entry5
<小时/>

丑陋的方式

min_entry = min(license_dic, key=lambda k: int(license_dic[k]['available_license']) if int(license_dic[k]['available_license']) != 0 else 10 ** 10)

关于python - 如何获取此嵌套字典中的最小非零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59760137/

相关文章:

python - 如何在 macOs 上使用 libxml2 和 python?

python - 如何将 multiprocessing.Pool 实例传递给 apply_async 回调函数?

python-3.x - 无法使用 PRAW 从某些 Reddit 子版 block 中获取随机帖子

python - json.dumps 对我不起作用

python-3.x - 如何解释这个 10*10 混淆矩阵?

python - APScheduler 会跳过作业并在其他时间运行

python - axes3d.plot_wireframe(X,Y,Z) 错误

python - django 添加占位符文本到表单字段

python - 无法理解特定的Python 3代码

python-3.x - 如何在 Selenium python 中找到页面的特定元素,因为我找不到它们