【问题标题】:If key contain substring in Python如果键包含 Python 中的子字符串
【发布时间】:2017-09-15 09:39:50
【问题描述】:

我在 dict 中有更多不同类型的键(也不需要键入值)

'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 中是否有类似“存在”的东西?

【问题讨论】:

  • 如果我们有这个密钥'PL-1/KK-2/' 怎么办?
  • 不可能是那个键。这是已解析的 XML 文件。

标签: python dictionary if-statement


【解决方案1】:

不,没有“存在”运算符。

在您的情况下,您应该只测试斜杠:

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

如果需要有key的组成部分,存储并测试长度:

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
    

    【讨论】:

    • OP 认为每个键上的 do something
    • 再读一遍,我觉得你是对的。 “人类语言”似乎表明了这一点,尽管“代码”并未指出这一点。
    猜你喜欢
    • 2021-05-30
    • 1970-01-01
    • 2014-02-19
    • 2017-10-19
    • 1970-01-01
    • 2011-05-14
    • 2022-08-19
    • 1970-01-01
    • 2012-10-27
    相关资源
    最近更新 更多