我有一个很大的字典列表。每个字典包含每个传感器在收集每个数据点时的时间序列数据。我想知道特定传感器的索引位置和日期。所以,我可以更新传感器值。我的代码:
big_list = [
dict({'sensor':12,'time':'2022-02-03','value':10}),
dict({'sensor':22,'time':'2022-02-03','value':12}),
dict({'sensor':32,'time':'2022-02-03','value':24}),
dict({'sensor':12,'time':'2022-02-04','value':17}),
dict({'sensor':22,'time':'2022-02-04','value':13}),
dict({'sensor':32,'time':'2022-02-04','value':21})]
# Find index of an item
item_to_find = dict({'time':'2022-02-03','sensor':32})
# solution
big_list.index(item_to_find)
当前输出:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: {'sensor': 32, 'time': '2022-02-03'} is not in list
预期产出:
2
6条答案
按热度按时间s8vozzvw1#
我知道这可能不是最有效的解决方案,但这是我能做的最好的了。:)
h4cxqtbf2#
你可以试试
next()
+enumerate()
:图纸:
或者:如果找不到项目,您可以将默认参数添加到
next()
:lyr7nygr3#
与@Andrej的想法相同,但您可以使用lambda函数来更清晰地表达意图
这里
next()
将返回第一个匹配的索引,如果没有找到匹配,则返回None
。lmvvr0a84#
如果你正在寻找一个特定的
date
和sensor
,你可以做一个循环来迭代列表中的每个字典,并将匹配项的索引保存在索引列表中:nukf8bse5#
试试这个:
说明:
map()
提取要比较的值,去掉value
item_to_find
进行比较-这将返回一个迭代器,该迭代器将产生True
(匹配)或False
(不匹配)。list()
的列表True
列表中的第一个匹配项并返回索引。您可能还想看看
pandas
,它使所有这些都更容易处理。nzkunb0c6#
我也在网上找到了答案:
溶液索引