簡體   English   中英

如何使用字典為鍵分配多個值?

[英]How to assign multiple values to a key using dictionaries?

我有一個 csv 文件,其中包含(視頻游戲的)名稱、平台、流派、出版商等。我正在嘗試創建 3 個單獨的字典。 字典一很容易,因為使用的關鍵是一個獨特的視頻游戲的標題。

對於第二和第三本詞典,我遇到了問題,因為鍵"Genre""Publisher"不是唯一的。 我試圖讓D2看起來像:

D2 = { 'Puzzle' : [(tup2),(tup2], 'Another genre': [(tup2)]...}

因為有多個游戲具有相同的類型。

import csv

fp = open("video_game_sales_tiny.csv", 'r')
fp.readline()
reader = csv.reader(fp)

D1 = {}
D2 = {}
D3 = {}

for line in reader:
    name = line[0].lower().strip()
    platform = line[1].lower().strip()

    if line[2] in (None, 'N/A'):
        pass
    else:
        year = int(line[2])

    genre = line[3].lower().strip()
    publisher = line[4]
    na_sales = float(line[5])
    europe_sales = float(line[6])*1000000
    japan_sales = float(line[7])*1000000
    other_sales = float(line[8])*1000000

    global_sales = (europe_sales + japan_sales + other_sales)
    tup = (name,platform, year,genre, publisher, global_sales)
    tup2 = (genre, year, na_sales, europe_sales, japan_sales, other_sales, global_sales)
    tup3 = (publisher, name, year, na_sales, europe_sales, japan_sales, other_sales, global_sales)

    D1[name] = tup
    D2[genre] = tup2
    D3[publisher] = tup3

print(D1)
print(D2)
print(D3)

您應該將genre (例如)條目創建為一個列表,然后將 append 創建到列表中。

 if not genre in D2:
      D2[genre] = []

 D2[genre].append(tup2)

你有非唯一鍵的問題。

如果該問題得到糾正(您需要唯一鍵), merge( ) 方法可以與任何其他方式選項(左、右、內...)一起使用。

Pandas 庫merge()方法非常強大,可以解決您的問題。

但是,您需要對非唯一鍵問題做一些事情。

我建議使用方法unique()並為每個DataFrame創建自己的索引列表。 這只是 ETL 流程中的一層。

假設您有兩個DataFramesdf_adf_b 此數據幀共享一個名為u_key的唯一鍵。

與這些數據框的合並過程將類似於:

import pandas as pd
...
left_merge = pd.merge(df_a, df_b, on=["u_key"], how="left")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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