gpt4 book ai didi

python - 在大型累积列表中查找较小列表的多次重复

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:46 24 4
gpt4 key购买 nike

我有一个很大的字符串列表,例如:

full_log = ['AB21','BG54','HG89','NS72','Error','CF54','SD62','KK02','FE34']

和多个小字符串列表,例如:

tc1 = ['HG89','NS72']
tc2 = ['AB21','BG54']
tc3 = ['KK02','FE34']
tc4 = ['CF54','SD62']

我想在维护序列的较大列表中找到每个较小的列表,以便输出类似于:

tc2-tc1-Er-tc4-tc3

我想知道是否有任何直接的 pythonic 方式来处理这种情况。

最佳答案

你需要为你的小列表的元素创建一个 map (字典):

m = {k: v for k, v in zip(map(tuple, [tc1, tc2, tc3, tc4])), ["tc1", "tc2", "tc3", "tc4"])}
>>> {('KK02', 'FE34'): 'tc3', ('AB21', 'BG54'): 'tc2', ('CF54', 'SD62'): 'tc4', ('HG89', 'NS72'): 'tc1'}

然后您可以使用迭代器遍历列表:

itr = iter(full_log)

for i in itr:
if i != "Error":
n = next(itr)
if n != "Error":
if (i, n) in m:
print m[(i, n)]
else:
print "Er"
else:
print "Er"



>>> tc2
tc1
Er
tc4
tc3

如果您不介意在第一个列表中扩展“错误”条目:

full_log2 = [item for sublist in [[i] if i != "Error" else ["Error", "Error"] for i in full_log] for item in sublist]
>>> ['AB21', 'BG54', 'HG89', 'NS72', 'Error', 'Error', 'CF54', 'SD62', 'KK02', 'FE34']

然后你可以使用列表理解:

print [m[(full_log2[i], full_log2[i+1])] if (full_log2[i], full_log2[i+1]) in m else "Er" for i in range(0, len(full_log2)-1, 2)]
>>> ['tc2', 'tc1', 'Er', 'tc4', 'tc3']

关于python - 在大型累积列表中查找较小列表的多次重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39654646/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com