【问题标题】:How to find a specific python dictionary key with a string如何使用字符串查找特定的python字典键
【发布时间】:2021-10-29 13:50:13
【问题描述】:

如何将 general_key_array 中的键名与 all_keys 字典匹配以获得“aws”。作为子字符串?我添加了startswith部分,但它一直返回True。

general_keys = dict()
all_keys = {'activity': 'ins','install': 'all','aws.a': 'data', 'aws.b': 'data1', 'aws.c': 'data2'} #read from file
general_key_array = ['install', 'aws.']
    
for key in general_key_array:
    if key.startswith(key) in all_keys:
        general_keys[key] = dict(filter(lambda item: key in item[0], all_keys.items()))

【问题讨论】:

  • 你可以有一个元组作为一个字典的键
  • 您对输出的期望是什么?
  • 我需要检查key是否以general_key_array项开头,如果不是则需要继续。
  • key.startswith(key) 将永远为真。
  • 是的。检查这种情况的正确方法是什么?

标签: python dictionary substring key


【解决方案1】:

你可以用一个字典理解来做这一切。

general_keys = {key: value for key, value in all_keys.items() 
                if any(key.startswith(gk) for gk in general_key_array)}

【讨论】:

    【解决方案2】:

    key.startswith(key) 始终等于 True,因为字符串以自身开头是重言式。

    你可以在你写的第一个循环之后添加一个带有all_keys键的for循环来解决这样的问题

    general_keys = dict()
    all_keys = {'activity': 'ins','install': 'all','aws.a': 'data', 'aws.b': 'data1', 'aws.c': 'data2'} 
    general_key_array = ['install', 'aws.']
        
    for key in general_key_array:
        for s in all_keys :
            if s.startswith(key): # s is part of all_keys, no tautology here
                general_keys[key] = dict(filter(lambda item: key in item[0], all_keys.items()))
    

    【讨论】:

      猜你喜欢
      • 2012-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-20
      • 2019-08-06
      • 1970-01-01
      相关资源
      最近更新 更多