[英]Creating list with dictionary instead of multiple dictionaries in python
我在程序的輸出格式上遇到困難
import pandas as pd
def main():
data = pd.read_json("/home/mahmoud/Desktop/FB.json", orient='records')
company_name = data['dataset']['name']
columns_names = data['dataset']['column_names']
stock_data = data['dataset']['data']
data_list = []
for rows in range(len(stock_data)):
for columns in range(12):
dataValues = {columns_names[columns]:stock_data[rows][columns]}
data_list.append(dataValues)
for val in range(len(data_list)):
print(data_list[val])
if __name__=='__main__':main()
當我運行該程序時,得到以下輸出,每個條目本身就是一個字典: {'Date': '2018-12-11'}
{'Open': 143.88}
{'High': 143.88}
{'Low': 141.1}
{'Close': 142.08}
{'Volume': 20300349.0}
{'Dividend': 0.0}
{'Split': 1.0}
{'Adj_Open': 143.88}
{'Adj_High': 143.88}
{'Adj_Low': 141.1}
{'Adj_Close': 142.08}
我正在嘗試輸出以下內容: [{'Date':2018-12-11, 'Open':143.88, 'High':143.88, 'Low':141.1, 'Close':142.08, 'Volume':20300349.0, 'Dividend':0.0, 'Split':1.0, 'Adj_Open':143.88, 'Adj_High':143.88, 'Adj_Low':141.1, 'Adj_Close':142.08}, {'Date':22018-12-10, 'Open':139.6, 'High':143.05, 'Low':139.01, 'Close':141.85, 'Volume':26422173.0, 'Dividend':0.0, 'Split':1.0, 'Adj_Open':139.6, 'Adj_High':143.05, 'Adj_Low':139.01, 'Adj_Close':141.85}]
這些是變量stock_data和columns_names的內容
stock_data: [['2018-12-11', 143.88, 143.88, 141.1, 142.08, 20300349.0, 0.0, 1.0, 143.88, 143.88, 141.1, 142.08, 20300349.0], ['2018-12-10', 139.6, 143.05, 139.01, 141.85, 26422173.0, 0.0, 1.0, 139.6, 143.05, 139.01, 141.85]]
column_names: ['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'Dividend', 'Split', 'Adj_Open', 'Adj_High', 'Adj_Low', 'Adj_Close', 'Adj_Volume']
這可以像使用一個列表理解(外部列表)和一個字典理解(內部字典)那樣簡單。 只需遍歷stock_data
每一行,並針對每一行(使用zip ) 同時遍歷當前行的值和列名。 所有這些都可以使用標准的for循環來完成,就像在您發布的代碼中一樣,但這將更加冗長; 此外,下面的理解並不難讀。
import pandas as pd
def main():
data = pd.read_json("/home/mahmoud/Desktop/FB.json", orient='records')
company_name = data['dataset']['name']
columns_names = data['dataset']['column_names']
stock_data = data['dataset']['data']
# Here is the change
data_list = [{c: v for c, v in zip(columns_names, r)} for r in stock_data]
for val in data_list:
print(val, data_list[val])
if __name__ == '__main__':
main()
希望這對您有所幫助!
這是因為您在每次迭代后都會重置dataValues
,因此它會清除以前存儲的內容。 您需要將dataValues
附加到設置data_dict = {}
初始字典中。 您永遠不會對代碼執行任何操作,我假設這就是您嘗試放置所有這些值的地方:鍵
import pandas as pd
def main():
data = pd.read_json("/home/mahmoud/Desktop/FB.json", orient='records')
company_name = data['dataset']['name']
columns_names = data['dataset']['column_names']
stock_data = data['dataset']['data']
data_dict = {}
for rows in range(len(stock_data)):
for columns in range(12):
dataValues = {column_name[columns]:stock_data[rows][columns]}
# now take your dataValues, and add that to your data_dict below
CODE GOES HERE
for val in dataValues:
print(val, dataValues[val])
if __name__ == '__main__':main()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.