从python 3的字典列表中提取数据

从python 3的字典列表中提取数据,python,python-3.x,Python,Python 3.x,我在用蟒蛇3。 如果我有以下词典列表: [{'stock_symbol': 'ALT', 'shares_total': 1, 'Price': 12.29}, {'stock_symbol': 'NFLX', 'shares_total': 5, 'Price': 534.5}] 我想提取每个股票符号、股票总数和价格。并将这些值分别存储在符号、股票和价格中。我如何才能做到这一点?使用列表理解: mydata = [{'stock_symbol': 'ALT', 'shares_total'

我在用蟒蛇3。 如果我有以下词典列表:

[{'stock_symbol': 'ALT', 'shares_total': 1, 'Price': 12.29}, 
{'stock_symbol': 'NFLX', 'shares_total': 5, 'Price': 534.5}]

我想提取每个股票符号、股票总数和价格。并将这些值分别存储在符号、股票和价格中。我如何才能做到这一点?

使用列表理解:

mydata = [{'stock_symbol': 'ALT', 'shares_total': 1, 'Price': 12.29}, {'stock_symbol': 'NFLX', 'shares_total': 5, 'Price': 534.5}]

stock_symbol = [i["stock_symbol"] for i in mydata]
shares_total = [i["shares_total"] for i in mydata]
price = [i["Price"] for i in mydata]

类似地,使用@Stephen Mylabathula的解决方案,您可以创建一个包含所有这些列表的字典,如下所示。然后,您可以调用这些列表中的任何一个,例如结果['price']:

result={stock_symbol : [i["stock_symbol"] for i in mydata],
shares_total : [i["shares_total"] for i in mydata],
price : [i["Price"] for i in mydata]}

最简单的方法是只循环数组一次

mydata = [{'stock_symbol': 'ALT', 'shares_total': 1, 'Price': 12.29}, {'stock_symbol': 'NFLX', 'shares_total': 5, 'Price': 534.5}]
stock_symbol=[]
shares_total=[]
price=[]

# start loop
for data in mydata:
   stock_symbol.append(data['stock_symbol'])
   shares_total.append(data['shares_total'])
   price.append(data['Price'])

有很多方法可以做到这一点。。其中一些

inp = [
    {'stock_symbol': 'ALT', 'shares_total': 1, 'Price': 12.29},
    {'stock_symbol': 'NFLX', 'shares_total': 5, 'Price': 534.5}
]
如果codegolfing不是目标,那么最简单的方法就是将输入循环一次

stock_symbols = []
shares_total = []
prices = []
for entry in inp:
    stock_symbols.append(entry['stock_symbol'])
    shares_total.append(entry['shares_total'])
    shares_total.append(entry['Price'])
同样的方法,但是使用dict,所以如果dict的键发生变化,它将很容易使用

from collections import defaultdict
op_dict = defaultdict(list)
fields = ['stock_symbol', 'shares_total', 'Price']

for inp_ in inp:
    for field in fields:
        op_dict[field].append(dict_[field])

op_dict['stock_symbol']
op_dict['shares_total']
op_dict['Price']
使用拉链

op_list = list(zip(*(_.values() for _ in inp)))
op_list[0] #stock_symbol
op_list[1] #shares_total
op_list[2] #Price