L = [ ]
a ={ 'A1' : [ 'A'] }
b = { 'A' : [ 'a1', 'a2'] , 'a1' : ['a11' , 'a12'] }
c = [ 'a11.txt' , 'a3.txt' ]
我的条件:
下面是我的代码:
for k,v in a.items():
for element in v:
if element +'.txt' in c :
L.append(k)
else:
for k1,v1 in b.items():
if element == k1:
for element1 in v1:
if element1+'.txt' in c:
L.append(k1)
else:
for k1,v1 in b.items():
if element1 == k1 :
for element2 in v1 :
if element2+'.txt' in c :
L.append(k1)
我想要的结果应该是L = [ ]
但是我得到L = [ 'a1' ]
答案 0 :(得分:0)
这有效:
a = {'A1': [ 'A']}
b = {'A': ['a1', 'a2'], 'a1': ['a11' , 'a12']}
a.update(b)
c = ['a11.txt', 'a1.txt', 'a2.txt', 'A.txt']
c = [x[:-4] for x in c]
L = [k for k, v in a.items() if all(x in c for x in v)]
print(L)
# ['A1', 'A']
不需要两个字典。我合并了它们(或者如果可以先使用Single,那会更好),并过滤c
列表以删除'.txt'
部分。
然后,我们遍历字典并检查过滤列表中是否存在所有值。