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

时间:2016-06-13 03:28:54

标签: python

示例列表

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

我试图让收盘日期为914.25即列表['date'] [2] 但我不知道如何让索引2接近。

谢谢。

3 个答案:

答案 0 :(得分: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'

答案 1 :(得分:1)

你可以试试这个:

>>> 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)。

答案 2 :(得分:0)

示例来自哪里?我不认为你可以在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'