繁体   English   中英

如何在字典中找到列表的索引号?

[英]How to find the index number of list that in dictionary?

示例列表

{
'date': array(['06/08/2016', '06/09/2016', '06/10/2016']),
'close': array([ 923.13,  914.25,  909.42])
}

我试图得到关闭的日期是914.25,这是列表['日期'] [2],但我不知道如何获得索引2关闭。

谢谢。

理想情况下,如果您经常进行此类查询,则应重新构建数据以更好地适应用例。 例如,有一个字典,其中键是金额,日期是值。 然后,您将按键快速O(1)查找字典。

但是,在这种问题的状态下,您可以使用zip()next()来解决它:

>>> d = {
... 'date': ['06/08/2016', '06/09/2016', '06/10/2016'],
... 'close': [ 923.13,  914.25,  909.42]
... }
>>> a = 914.25
>>> next(date for date, amount in zip(d['date'], d['close']) if amount == a)
'06/09/2016'

请注意,如果找不到金额,则next()将因StopIteration异常而失败。 您可以处理它,也可以事先提供默认值:

>>> a = 10.00
>>> next((date for date, amount in zip(d['date'], d['close']) if amount == a), 'Not Found')
'Not Found'

你可以试试这个:

>>> data = { 'date': ['06/08/2016', '06/09/2016', '06/10/2016'],'close': [ 923.13,  914.25,  909.42]}
>>> data['date'][data['close'].index(914.25)]
'06/09/2016'

感谢index() ,您可以获得所需值的索引(在本例中为914.25)。

示例来自哪里? 我不认为你可以在Python中拥有一个字符串array

假设Python数据结构是:

{
    'date': ['06/08/2016', '06/09/2016', '06/10/2016'],
    'close': [923.13,  914.25,  909.42]
}

并且close的索引总是匹配date的索引,然后:

In [1]: d = {
   ...:     'date': ['06/08/2016', '06/09/2016', '06/10/2016'],
   ...:     'close': [923.13,  914.25,  909.42]
   ...: }

你找到了914.25的索引:

In [2]: d['close'].index(914.25)
Out[2]: 1

您找到相应的日期:

In [3]: d['date'][1]
Out[4]: '06/09/2016'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM