2017-09-15 60 views
1

子我有更多不同类型的字典键(有没有必要键入数值,太)如果key包含在Python

'PL-1/KK-1/FO-1' 
'PL-1/KK-2/GH-3' 
'PL-1/KK-2' 
'PL-1/KK-1/FO-4' 

我需要一个条件

if exist (key.split('/')[2]) 
do something 
return data 
else: 
do something 
return data 

所需的输出: 在第一个条件中,除'PL-1/KK-2'之外的所有密钥都可以输入。

Python中是否存在类似'存在'的东西?

+1

如果我们有这个键''PL-1/KK-2'' '? – RomanPerekhrest

+0

它不可能是那个钥匙。这是已解析的XML文件。 – jovicbg

回答

3

不,没有'存在'操作符。

在你的情况应该只是测试斜线:

if key.count('/') >= 2: 
    # ... 

如果你需要有钥匙,商店的元器件和测试长度:

components = key.split('/') 
if len(components) >= 2: 
    # ... 
2
def has_key(i_dict, i_filter): 
    return any(k for k in i_dict.iterkeys() if i_filter(k)) 

# be it a dict called my_dict 
# you could call it like 
has_key(my_dict, lambda x: x.count("/") == 2) 
# or 
has_key(my_dict, lambda x: len(x.split("/"))==2) 

这里有一个小测试

>>> my_dict = {"a":1,"c":3} 
>>> has_key(my_dict, lambda k:k=="a") 
True 
>>> has_key(my_dict, lambda k:k=="c") 
True 
>>> has_key(my_dict, lambda k:k=="x") 
False 
+0

OP认为在每个密钥上做'某事' – RomanPerekhrest

+0

再次阅读后,我认为你是对的。 “人类语言”似乎表明,虽然“代码”并没有指出这一点。 –