(Python)使用特定元素填充字典

时间:2018-07-01 14:19:05

标签: python python-3.x dictionary

我有点迷失在这里,无法真正找到类似的问题。也许还因为我不知道如何搜索。

我想导入names.csv文件,该文件在结构中包含一堆名称:ID,名称,性别,年份,州,计数

现在,我正在尝试将所有名称和count整数转录成字典,我称之为names。我不明白为什么它现在不断向我返回一个空字典。

通过条件语句,我想说的是,如果名称已经在字典中,则应该将计数加到现有计数上。

有人可以帮忙吗?可悲的是,我真的是一个新手,不能帮助自己...

with open("../data/names.csv") as file:
names = {}

for lines in file:
    data = lines.strip().split(",")
    name = data[1]
    count = data[5]
    if name == "Name":
        continue
    for name, count in names.items():
        if name in names:
            names[name] = names[name] + count
        else:
            names[name] = count

print(names)

2 个答案:

答案 0 :(得分:1)

最好使用标准python lib(for details link)中的defaultdict以及使用csv文件csv模块(link for details

from collections import defaultdict

food_list = 'spam spam spam spam spam spam eggs spam'.split()
food_count = defaultdict(int) # default value of int is 0
for food in food_list:
    food_count[food] += 1 # increment element's value by 1

food_count

结果,您将拥有:

defaultdict(<type 'int'>, {'eggs': 1, 'spam': 7})

答案 1 :(得分:1)

首先,您应该避免自己解析CSV文件,例如,引号涉及。有a csv module built-in

对于您的情况,我将使用pandas.groupby()函数与.sum()一起可以完全满足您的要求:

import pandas as pd
df = pd.read_csv('names.csv')
print(df[['Name', 'Count']].groupby('Name').sum())