gpt4 book ai didi

python - 检查 dict 键以确保所需的键始终存在,并且该 dict 在定义的一组名称之外没有其他键名称

转载 作者:行者123 更新时间:2023-12-02 10:56:48 24 4
gpt4 key购买 nike

我在 python 中有一个遵循这种通用格式的字典:

{'field': ['$.name'], 'group': 'name', 'function': 'some_function'}
我想对 dict 进行一些预检查,以确保“字段”始终存在,并且除了“组”和“功能”之外没有更多的键存在,这两个都是可选的。
我知道我可以通过使用一个又长又不整洁的 if 语句来做到这一点,但我认为必须有一种更简洁的方法?
这是我目前拥有的:
if (('field' in dict_name and len(dict_name.keys()) == 1) or 
('group' in dict_name and len(dict_name.keys()) == 2) or
('function' in dict_name and len(dict_name.keys()) == 2) or
('group' in dict_name and 'function' in dict_name and len(dict_name.keys()) == 3))
本质上,我首先检查“字段”是否存在,因为这是必需的。然后我检查它是否是唯一的键(这很好),或者它是否是“组”旁边的键而没有其他键,或者是“功能”旁边的键而没有其他键,或者是“组”旁边的键和“功能”,没有其他。
是否有一种更整洁的方法来检查提供的 key 是否只有这 3 个 key ,其中两个是可选的?

最佳答案

就我而言,你想检查一下,

  • 套装{'field'}总是包含在你的字典键集中
  • 您的 dict 键集始终包含在集 {'field', 'group', 'function'}

  • 所以只需编码!
    required_fields = {'field'}
    allowed_fields = required_fields | {'group', 'function'}

    d = {'field': 123} # Set any value here

    if required_fields <= d.keys() <= allowed_fields:
    print("Yes!")
    else:
    print("No!")
    除非您有一些特殊条件(例如,互斥键),否则此解决方案可针对任何必需和允许的字段集进行扩展
    (感谢@Duncan 非常优雅的代码缩减)

    关于python - 检查 dict 键以确保所需的键始终存在,并且该 dict 在定义的一组名称之外没有其他键名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64118474/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com