【问题标题】:when I use a tuple for a key of a dictionary, can I search data with only one element of the tuple key?当我使用元组作为字典的键时,我可以只使用元组键的一个元素来搜索数据吗?
【发布时间】:2022-01-04 21:44:46
【问题描述】:

假设有一个字典变量“dict”,如下所示。在这种情况下使用元组类型的键。

      dict = {(a,2019): 6, (a,2020): 7 , (a,2021):8, (a,2022):9, (b,2020):8, (b,2021):10}

然后我想用键的第一个元素为“a”的键搜索所有值。 所以搜索后我想将结果集放入列表“结果”中。结果将具有如下值。

      result = [6,7,8,9]  

我将能够得到如下值

result.append(dict.get((a,2019)))

result.append(dict.get((a,2020))) ....

但我想通过只匹配一次来搜索数据,例如在这种情况下使用正则表达式

result=dict.get((a, "\d{4}")) 显然,这是行不通的。

我只是想知道在这种情况下是否有一种方法可以通过仅匹配元组类型键的一个元素来搜索数据。

【问题讨论】:

  • 当然:遍历键并按顺序测试每个键。
  • 什么是a?我认为具有某些值的变量?如果你想的是a这个字符,那么把"a"放在例子中,这样会更容易。
  • 这基本上是双索引。这是一次性查找,还是您想索引一次并多次使用?
  • 仅通过遍历键

标签: python dictionary tuples


【解决方案1】:

列表理解如何查看 a 是否在您的字典的键中?

mydict = {(a,2019): 6, (a,2020): 7 , (a,2021):8, (a,2022):9, (b,2020):8, (b,2021):10}

result = [v for k,v in mydict.items() if a in k]
# [6, 7, 8, 9]

【讨论】:

    【解决方案2】:

    您可以使用列表推导:

    dct = {('a',2019): 6, ('a',2020): 7 , ('a',2021):8, ('a',2022):9, ('b',2020):8, ('b',2021):10}
    
    result = [v for k, v in dct.items() if k[0] == 'a']
    print(result) # [6, 7, 8, 9]
    

    【讨论】:

      【解决方案3】:

      您可能只需要一本字典。如果你定义:

      from collections import defaultdict
      
      mydict = defaultdict(dict)
      

      然后你可以写mydict['a'][2010] = 100之类的东西,得到你所期望的。

      查看mydict['a'] 的值将返回键的第一部分为“a”的所有年份的字典。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-30
        • 2020-09-25
        • 1970-01-01
        • 1970-01-01
        • 2014-01-28
        • 1970-01-01
        • 2010-11-28
        相关资源
        最近更新 更多