【发布时间】:2023-03-21 06:56:01
【问题描述】:
我将尝试描述我的问题的核心: 我有一个信号列表,每个信号都有自己的别名,还有一个包含许多别名、值和值质量(质量可以是 0、1 或 2)条目的数据集。 我正在尝试遍历信号,在数据集中找到它的别名,并更新每个信号以给定质量写入多少次的计数器。 我已经建立了一个字典
dati = {'signals': [signal1, signal2, ...], 'alias': [alias1, alias2, ...], 'nGOOD': [0, 0, ...], 'nBAD': [0, 0, ...], 'nFREEZE': [0, 0, ...]}
我最终编写了这样的代码:
for i in range(0, len(dati['signals'])):
#I extract the "quality" information using the alias
quality = extracted using(dati['alias'][i])
######
if quality == '0':
dati['nGOOD'][i] += 1
elif quality == '1':
dati['nBAD'][i] += 1
elif quality == '2':
dati['nFREEZE'][i] += 1
else:
raise Exception('Qualità sconosciuta')
这段代码有效,但我知道使用索引并不是最符合 Python 的做法。我知道我可以使用 zip() 来遍历不同的列表,但是我得到了无法修改的元组。 有没有更好的方法来做到这一点?
感谢您的宝贵时间。
@Wups:代码的最终输出是信号名称和质量计数,所以我需要保持信息链接。
@Pranav Hosangadi:如果我理解正确,使用 enumerate 会更干净一些,但这仍然不是我所希望的。我仍然需要通过索引调用它们来修改质量。我曾希望有一种方法可以在循环期间访问它们。
【问题讨论】:
-
您的代码中似乎没有使用信号列表中的值。如果这是正确的,您只需要遍历别名列表。
-
这能回答你的问题吗? What does enumerate() mean?
-
您需要
zip()和enumerate()的组合。 -
如果您使用字典列表而不是列表字典,事情会容易得多。