【问题标题】:Find key different from given key when iterating list of dictionaries迭代字典列表时查找与给定键不同的键
【发布时间】:2017-06-08 08:15:38
【问题描述】:

我有一个字典列表,在每个字典中都有键 site 存在。 所以换句话说,这段代码返回True

all('site' in site for site in summary)

问题是,如果任何字典中存在与 site 不同的键,那么迭代字典列表并返回 True 的 Python 方法是什么?

示例:在下面的列表中,我想返回True,因为最后一个字典中存在cost,但是我不知道另一个键是什么,它可以是cost,如示例所示,也可以是其他字符串;随机键。

[
    {"site": "site_A"},
    {"site": "site_B"},
    {"site": "site_C", "cost": 1000}
]

【问题讨论】:

    标签: python dictionary


    【解决方案1】:

    如果所有字典都有键 site,则字典的长度至少为 1。任何其他键的存在都会将字典大小增加到大于 1,测试一下:

    any(len(d) > 1 for d in summary)
    

    【讨论】:

      【解决方案2】:

      您可以检查每个字典 dct:

      any(key != "site" for key in dct)
      

      如果您想查看此字典列表 dcts,请在其周围添加另一个 anyany(any(key != "site" for key in dct) for dct in dcts)

      这也使得它可以很容易地扩展到允许多个不同的键。 (例如any(key not in ("site", "otherkey") for key in dct))因为如果你只能使用一个键,那么字典有什么用?

      【讨论】:

        【解决方案3】:

        这是一个较长的版本,但它可以满足您的需求。只是为了提供更多选择:

        any({k: v for k, v in site.items() if k != 'site'} for site in summary)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-06-07
          • 2011-11-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-01
          • 1970-01-01
          相关资源
          最近更新 更多