繁体   English   中英

当我使用元组作为字典的键时,我可以只使用元组键的一个元素来搜索数据吗?

[英]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 = [6,7,8,9]  

我将能够获得如下值

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

结果.append(dict.get((a,2020)))....

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

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

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

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

from collections import defaultdict

mydict = defaultdict(dict)

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

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

列表理解如何查看 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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM