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



我有一个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']}

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

您需要测试完整键:

(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

如果您只知道键的第一部分,您可以找出any的键是否包含它:

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

或者,获取匹配键的列表:

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

最新更新