【问题标题】:Checking the keys inside of the keys in dictionary检查字典中键内的键
【发布时间】:2019-03-29 05:16:06
【问题描述】:

有没有办法检查字典键中的内部键,如果元素里面有键元素,则从字典中返回相应的值。

例如检查key tuple的第二个元素中是否有"Hello"的元素,如果存在则返回对应的值。

d = {(1, "Hello"): "a", (2, "Bye"): "b"}
key = "Hello"
# Since "Hello" exist in d's key's element(second position), return "a"

【问题讨论】:

  • 必须遍历所有键
  • d[[v for v in d if key in v[1]][0]] 通过课程迭代

标签: python python-3.x dictionary key-value


【解决方案1】:

您可以遍历键元组,检查元组的第二个值是否等于您想要的(例如“hello”),如果是,则返回该键的值。像这样的:

d = {(1, "Hello"): "a", (2, "Bye"): "b"}
key = "Hello"
for k in d:
    if k[1] == key:
        return d[k]

【讨论】:

    【解决方案2】:

    获取包含该键的所有键元组的列表;获取该列表的第一个元素,并将其用作d 的索引。

    >>> d = {(1, "Hello"): "a", (2, "Bye"): "b"}
    >>> key = "Hello"
    >>> d[[key_tuple for key_tuple in d if key in key_tuple][0]]
    'a'
    

    【讨论】:

      【解决方案3】:

      是的;但是,您必须遍历字典中的每个键,直到找到您正在寻找的“内部键”。代码如下所示:

      d = {(1, "Hello"): "a", (2, "Bye"): "b"}
      key = "Hello"
      
      for k in d.keys():
          if key in k:
              print(d[k])
      

      您可以使用 Python 的 in 关键字检查元组中是否存在元素。这使您可以检查您的key 是否是您钥匙内的任何地方的“内部钥匙”。

      此代码将打印a 作为输出。

      【讨论】:

        【解决方案4】:

        使用 next(一旦找到匹配项就会返回)。 通过将默认返回设置为 None 我们确保不会收到 StopIteration 错误,我们现在可以继续使用字典 get 函数。

        请注意,在大多数情况下,这比完整查找要快。

        key = 'Hello'
        d.get(next((t for t in d if key in t), None))
        

        返回:

        'a'
        

        【讨论】:

        • 绝招!可能是迄今为止最好的答案,简洁明了。
        • @Idlehands 是的,谢谢,当 1 个匹配项足够时,next 非常适合查找。
        猜你喜欢
        • 2019-04-19
        • 1970-01-01
        • 2011-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-19
        相关资源
        最近更新 更多