Python:如何在字符串中查找每个列表项的存在

Dmi*_*kov 3 python list path

什么是['spam', 'eggs']在路径中找到每个目录名称存在的最pythonic方式,例如"/home/user/spam/eggs"

用法示例(不起作用,但解释了我的情况):

dirs = ['spam', 'eggs']
path = "/home/user/spam/eggs"
if path.find(dirs):
    print "All dirs are present in the path"
Run Code Online (Sandbox Code Playgroud)

谢谢

jfs*_*jfs 9

set.issubset:

>>> set(['spam', 'eggs']).issubset('/home/user/spam/eggs'.split('/'))
True
Run Code Online (Sandbox Code Playgroud)


Ale*_*lli 5

看起来像你想要的东西......:

if all(d in path.split('/') for d in dirs):
   ...
Run Code Online (Sandbox Code Playgroud)

这种单行样式是低效的,因为它保持每个d的分割路径(并且分割产生列表,而集合更适合于成员资格检查).将它变成2线:

pathpieces = set(path.split('/'))
if all(d in pathpieces for d in dirs):
   ...
Run Code Online (Sandbox Code Playgroud)

大大提高了性能.