从列表中搜索字符串中检索'x'。

问题描述 投票:0回答:1

我试图在字典(dict)中找到字符串(str)与列表(list)中任何元素的匹配后,从字典(dict)中打印'x'的值。

>>> dict = {'c3750': 'switch', 'vsrx': 'vfirewall'}
>>> list = ['c3750', 'vsrx']               
>>> str = "Juniper Networks, Inc. firefly-perimeter internet router, kernel JUNOS 12.1X47-D15.4 #0: 2014-11-12 02:13:59 UTC     [email protected]:/volume/build/junos/12.1/service/12.1X47-D15.4/obj-i386/junos/bsd/kernels/VSRX/kernel Build date: 2014-11-12 "
>>> if any(x in str.lower() for x in list):        
...   print "{}".format(dict['x'])                 
... 
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
KeyError: 'x'

预期的结果。它应该返回 "vfirewall".

python list dictionary if-statement search
1个回答
1
投票

Try应该是你要找的。

dct = {'c3750': 'switch', 'vsrx': 'vfirewall'}
lst = ['c3750', 'vsrx']
s = "Juniper Networks, Inc. firefly-perimeter internet router, kernel JUNOS 12.1X47-D15.4 #0: 2014-11-12 02:13:59 UTC     [email protected]:/volume/build/junos/12.1/service/12.1X47-D15.4/obj-i386/junos/bsd/kernels/VSRX/kernel Build date: 2014-11-12 "

for x in lst:
    if x in s.lower():
        print("{}".format(dct[x]))

你应该用一个循环来搜索列表中的每一个元素.


0
投票

你的意思是这样的吗?

dd = {'c3750': 'switch', 'vsrx': 'vfirewall'}
ll = ['c3750', 'vsrx']               
ss = "Juniper Networks, Inc. firefly-perimeter internet router, kernel JUNOS 12.1X47-D15.4 #0: 2014-11-12 02:13:59 UTC     [email protected]:/volume/build/junos/12.1/service/12.1X47-D15.4/obj-i386/junos/bsd/kernels/VSRX/kernel Build date: 2014-11-12 "

[dd[x] for x in ll if x in ss.lower()]

Out[1]:
    ['vfirewall']
© www.soinside.com 2019 - 2024. All rights reserved.