簡體   English   中英

用字典而不是python中的多個字典創建列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM