2017-09-15 5 views
1

で部分文字列を含んでいる場合、私はキーは、Python

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

(あまりにも値を入力する必要はありません)のdictのキーの複数の異なる種類を持っていると私は条件

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

いいえ、 'exists'演算子はありません。あなたのケースでは

あなただけのテストがスラッシュする必要があります

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

もう一度読むと、あなたは正しいと思います。 "人間言語"は、 "コード"がそれを指していないが、それを述べているようだ。 –