gpt4 book ai didi

python - 检查给定键是否包含在多个字典中的任何一个中

转载 作者:行者123 更新时间:2023-12-03 15:11:50 25 4
gpt4 key购买 nike

我有多个字典,其中包含取决于其业务值(value)的数据,例如:

companies = {'google': 'value_1', 'facebook': 'value_2'}
names = {'alex': 'value_3', 'john': 'value_4'}
...

我需要检查变量 x包含在任何这些字典中,并确定它包含在哪些字典中。此类字典的数量可能很大,因此手动检查它们不是很有效。有什么比pythonic更

if x in companies:
pass # do something
elif x in names:
pass # do something
...

最佳答案

简单/快速编码:在字典列表中循环,找到时停止。

但是,如果您执行多次搜索,复杂性并不好。相反,请创建您的词典的词典。

  • 键是键的联合
  • 这些值是情侣列表(值,原始字典)

  • 像这样:
    companies = {'google': 'value_1', 'facebook': 'value_2'}
    names = {'alex': 'value_3', 'john': 'value_4'}

    import collections

    c = collections.defaultdict(list)

    for d in [companies,names]:
    for k,v in d.items():
    c[k].append((v,d))

    现在:
    print(c.get('google'))

    打印:
    [('value_1', {'google': 'value_1', 'facebook': 'value_2'})

    现在,如果我在两个字典中添加一个公共(public)键:
    names = {'alex': 'value_3', 'john': 'value_4', 'facebook':'value_5'}
    print(c.get('facebook'))

    我们得到所有值和原始字典的列表:
    [('value_2', {'google': 'value_1', 'facebook': 'value_2'}),
    ('value_5', {'alex': 'value_3', 'john': 'value_4', 'facebook': 'value_5'})]

    使用该解决方案,即使您有很多字典,查找始终是 O(1)一旦建立了新的大词典。构建在 2 或 3 次查找后摊销。

    上面,我们看到源字典已被保留。现在您可以选择如何识别这本词典。我选择放置引用本身,因为我没有约束。

    关于python - 检查给定键是否包含在多个字典中的任何一个中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60991559/

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