我想在循环中使用sub_code_stop
(在列表中)
sub_change = [[0, '150', 'aaa'], [0, '151', 'ccc'],
[0, '152', 'bbb'], [0, '152', 'ddd']]
def sub_code_stop(a):
for cc in sub_change:
if a == cc[1]:
return cc[2]
else:
return 0
lis = [['150', '151'], ['152', '153']]
for i in lis:
print(sub_code_stop(i[0]))
返回是
aaa
0
我想要
aaa
bbb
答案 0 :(得分:4)
将功能更改为:
def sub_code_stop(a):
for cc in sub_change:
if a == cc[1]:
return cc[2]
return 0
您之前的代码仅与sub_change
的第一个元素进行比较。
如果sub_change
中每个子列表的第二个元素都是唯一的,则可以执行以下操作:
sub_change = [[0, '150', 'aaa'], [0, '151', 'ccc'],
[0, '152', 'bbb'], [0, '153', 'ddd']]
sub_dict = {b:c for _,b,c in sub_change}
lis = [['150', '151'], ['152', '153']]
for i in lis:
print(sub_dict.get(i[0],0))
答案 1 :(得分:2)
在当前代码中,如果第一个元素不匹配,则在else部分保留带有return
的函数。您必须继续循环以测试下一个元素。
如果找到某些内容,则返回适当的值。如果找不到任何内容,则必须在循环结束后再处理。
def sub_code_stop(a):
for cc in sub_change:
if a == cc[1]:
return cc[2]
return 0