当我将元组用作字典的键时,是否可以仅使用元组键的一个元素来搜索数据?

when I use a tuple for a key of a dictionary, can I search data with only one element of the tuple key?

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

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

然后我想搜索所有具有 'a' 的键的值作为键的第一个元素。 所以在搜索之后我想把结果集放到一个列表'result'中。结果将具有如下值。

      result = [6,7,8,9]  

我将能够得到如下值

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

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

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

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

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

列表推导式如何查看 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]

您可以使用列表理解:

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]

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

from collections import defaultdict

mydict = defaultdict(dict)

然后你就可以像mydict['a'][2010] = 100这样写,得到你想要的。

查看 mydict['a'] 的值将 returns 所有年份的字典,其中键的第一部分是 'a'。