keylist = ['A/P', 'A/Q', 'B/P', 'B/Q', 'C/P', 'C/Q']
List = ['A','B','C']
我想为List
中的每个元素以及keylist
中的每个元素进行操作:
for n in List:
for key in keylist:
if key.split('/')[0] == List[n] and key.split('/')[-1] == 'P':
try:
print(n) #placeholder
except:
pass
基本上,我想检查keylist
的第一个拆分元素是List
的元素,但输出是错误:
TypeError: list indices must be integers or slices, not str
答案 0 :(得分:0)
因为您在List [n]中使用的n不是List中元素的索引。
for n in List: # here n is not the index to element in list but element itself.
for key in keylist: # so you can't use List[n] below e.g. n is 'A' in first iteration
if key.split('/')[0] == List[n] and key.split('/')[-1] == 'P':
try:
print(n) #placeholder
except:
pass
如果您需要列表中的元素索引,请使用以下代码。
for idx, ele in enumerate(List):
for key in keylist:
if key.split('/')[0] == List[idx] and key.split('/')[-1] == 'P':
try:
print(List[idx]) # or print(ele)
except:
pass
此处ele == List[idx]
答案 1 :(得分:0)
keylist = ['A/P', 'A/Q', 'B/P', 'B/Q', 'C/P', 'C/Q']
List = ['A','B','C']
for n in List:
for key in keylist:
if ((key.split('/')[0] in List) and (key.split('/')[1] == 'P')):
try:
print(n) #placeholder
except:
pass
答案 2 :(得分:0)
Flat比嵌套
更好
for key in keylist:
s = key.split('/')
if s[0] in List and s[-1] == 'P':
try:
print(s[0]) #placeholder
except:
pass
只要List
中的元素是唯一的,这将有效。您的算法将复制List
中重复项的输出。这个算法不会。