首页 > 解决方案 > 如何使用字典为键分配多个值?

问题描述

我有一个 csv 文件,其中包含(视频游戏的)名称、平台、流派、出版商等。我正在尝试创建 3 个单独的字典。字典一很容易,因为使用的关键是一个独特的视频游戏的标题。

对于第 2 和第 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)

标签: pythondictionary

解决方案


您应该为(例如)创建条目genre作为列表,然后附加到列表中。

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

 D2[genre].append(tup2)

推荐阅读