如何从Python字典列表中提取数据

2024-07-05 09:40:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我期待着拉“高”从下面所有3个名单。我不知道该怎么办。你知道吗

[  
   {  
      'timestamp':'2019-04-09T23:41:00.000Z',
      'symbol':'XBTUSD',
      'open':5189.5,
      'high':5190,
      'low':5189,
      'close':5190,
      'trades':14,
      'volume':1246,
      'vwap':5189.4136,
      'lastSize':480,
      'turnover':24010476,
      'homeNotional':0.24010476,
      'foreignNotional':1246
   },
   {  
      'timestamp':'2019-04-09T23:40:00.000Z',
      'symbol':'XBTUSD',
      'open':5190,
      'high':5190,
      'low':5189.5,
      'close':5189.5,
      'trades':4,
      'volume':540,
      'vwap':5189.9523,
      'lastSize':20,
      'turnover':10404800,
      'homeNotional':0.104048,
      'foreignNotional':540
   },
   {  
      'timestamp':'2019-04-09T23:39:00.000Z',
      'symbol':'XBTUSD',
      'open':5197.5,
      'high':5195.5,
      'low':5187,
      'close':5190,
      'trades':56,
      'volume':24286,
      'vwap':5189.6829,
      'lastSize':1058,
      'turnover':467970327,
      'homeNotional':4.67970327,
      'foreignNotional':24286
   }
]

我试着简单地使用high = [0:]["high"]——但结果是

 TypeError: list indices must be integers or slices, not str

从每个列表中选择3个“高”是什么合适的命令?对于这个实例,它应该返回5190, 5190, 5195.5。你知道吗


Tags: closeopentradessymboltimestamplowhighvolume
3条回答

使用列表理解:[ x['high'] for x in data ] 如果数据是您在原始帖子中发布的数组。你知道吗

您可以使用pandas并转换为dataframe/表,然后您就可以得到df["high"]。你知道吗

如果只需要两个值,那么可以执行df['high'][:2]。这和你试过的相似。你知道吗

import pandas as pd

data = [  
   {  
      'timestamp':'2019-04-09T23:41:00.000Z',
      'symbol':'XBTUSD',
      'open':5189.5,
      'high':5190,
      'low':5189,
      'close':5190,
      'trades':14,
      'volume':1246,
      'vwap':5189.4136,
      'lastSize':480,
      'turnover':24010476,
      'homeNotional':0.24010476,
      'foreignNotional':1246
   },
   {  
      'timestamp':'2019-04-09T23:40:00.000Z',
      'symbol':'XBTUSD',
      'open':5190,
      'high':5190,
      'low':5189.5,
      'close':5189.5,
      'trades':4,
      'volume':540,
      'vwap':5189.9523,
      'lastSize':20,
      'turnover':10404800,
      'homeNotional':0.104048,
      'foreignNotional':540
   },
   {  
      'timestamp':'2019-04-09T23:39:00.000Z',
      'symbol':'XBTUSD',
      'open':5197.5,
      'high':5195.5,
      'low':5187,
      'close':5190,
      'trades':56,
      'volume':24286,
      'vwap':5189.6829,
      'lastSize':1058,
      'turnover':467970327,
      'homeNotional':4.67970327,
      'foreignNotional':24286
   }
]

df = pd.DataFrame(data)

print(df['high'].to_list())

[5190.0, 5190.0, 5195.5]

我想下面的答案会有帮助

我已将您的列表分配给listofDict,并使用for循环遍历所有列表元素。你知道吗

由于listofDict元素是dict类型,我使用来提取。你知道吗

这里

listofDict=[  
   {  
      'timestamp':'2019-04-09T23:41:00.000Z',
      'symbol':'XBTUSD',
      'open':5189.5,
      'high':5190,
      'low':5189,
      'close':5190,
      'trades':14,
      'volume':1246,
      'vwap':5189.4136,
      'lastSize':480,
      'turnover':24010476,
      'homeNotional':0.24010476,
      'foreignNotional':1246
   },
   {  
      'timestamp':'2019-04-09T23:40:00.000Z',
      'symbol':'XBTUSD',
      'open':5190,
      'high':5190,
      'low':5189.5,
      'close':5189.5,
      'trades':4,
      'volume':540,
      'vwap':5189.9523,
      'lastSize':20,
      'turnover':10404800,
      'homeNotional':0.104048,
      'foreignNotional':540
   },
   {  
      'timestamp':'2019-04-09T23:39:00.000Z',
      'symbol':'XBTUSD',
      'open':5197.5,
      'high':5195.5,
      'low':5187,
      'close':5190,
      'trades':56,
      'volume':24286,
      'vwap':5189.6829,
      'lastSize':1058,
      'turnover':467970327,
      'homeNotional':4.67970327,
      'foreignNotional':24286
   }
]


for l in listofDict:
   print (l['high'])

相关问题 更多 >