Python key存在:key是整数和字符串的元组

2024-04-25 19:49:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python字典,它的键是元组,值在列表中。元组包含整数和字符串。以下是一个简单的例子:

>>> x = {(1, 'test'): ['marry', 'tom']}

如果字典键中元组的第一个元素存在,我想构建一个逻辑:

所以我试着跟随:

>>> if 1 in x:
...     print x
... 

但没用。

但是,当键不是元组时,我执行了以下操作来测试函数中的键是否起作用:

>>> y = {}
>>> y[1] = []
>>> y[1].append("tom")
>>> if 1 in y:
...     print y
... 
{1: ['tom']}

如果key恰好是元组的第一个元素,如何检查字典中是否存在该key。


Tags: key字符串intest元素列表if字典
2条回答

如果您只知道密钥的第一部分,则可以查明密钥的any是否包含它:

if any(k[0] == 1 for k in x):

或者,要获取匹配密钥的列表:

keys = [k for k in x if k[0] == 1]

您需要测试全键

(1, 'test') in x

元组键不是特殊的,使用元组作为键并不意味着元组中的两个元素都成为单独的键。

如果需要将1'test'都作为键,则需要将它们分别添加为键,或者分别测试字典中的每个键。

您可以对dict类型进行子类化并对其进行扩展以支持您的解释:

class tupledict(dict):
    def __contains__(self, key):
        if super(tupledict, self).__contains__(key):
            return True
        return any(key in k for k in self)

演示:

>>> x = tupledict({(1, 'test'): ['marry', 'tom']})
>>> 1 in x
True
>>> (1, 'test') in x
True

相关问题 更多 >