Python:从字典中删除值并将剩余的两个值相乘

Python:从字典中删除值并将剩余的两个值相乘,python,csv,dictionary,Python,Csv,Dictionary,我正在处理一个大的CSV文件,其中每行包括日期和两个值。我正试图建立一个字典,将日期作为这两个值的键。然后我需要将每个键的两个值相乘,并记录答案。文件中有3000行 样本: 到目前为止,我已经将日期设置为每对值的键,但是它也将日期作为每一个键集的第三个值进行重用,有没有办法删除这个 一旦我删除了这个,有没有一种方法可以将每个键集中的值相乘 这是我目前的代码: main_file = "newnoblanks.csv" import csv import collections import p

我正在处理一个大的CSV文件,其中每行包括日期和两个值。我正试图建立一个字典,将日期作为这两个值的键。然后我需要将每个键的两个值相乘,并记录答案。文件中有3000行

样本:

到目前为止,我已经将日期设置为每对值的键,但是它也将日期作为每一个键集的第三个值进行重用,有没有办法删除这个

一旦我删除了这个,有没有一种方法可以将每个键集中的值相乘

这是我目前的代码:

main_file = "newnoblanks.csv"
import csv
import collections
import pprint

with open(main_file) as fp:
    root = csv.reader(fp, delimiter=',')
    result = collections.defaultdict(list)
    for row in root:
        date = row[0].split(",")[0]
        result[date].append(row)

print ("Result:-")
pprint.pprint(result)
这是我的输出:


我认为您甚至不需要在这里使用defaultdict,只需将整行(减去日期)分配给dict的键即可。您应该能够做到这一点

with open(main_file) as fp:
    root = csv.reader(fp, delimiter=',')
    result = dict()
    for row in root:
        date = row[0].split(",")[0]
        result[date] = row[1:]
如果你想得到这两个值的乘积,你可以这样做

for key in result:
    result[key] = reduce(lambda x, y: x*y, result[key])

我认为您甚至不需要在这里使用defaultdict,只需将整行(减去日期)分配给dict的键即可

with open(main_file) as fp:
    root = csv.reader(fp, delimiter=',')
    result = dict()
    for row in root:
        date = row[0].split(",")[0]
        result[date] = row[1:]
如果你想得到这两个值的乘积,你可以这样做

for key in result:
    result[key] = reduce(lambda x, y: x*y, result[key])

我知道这一点已经得到了回答,但我觉得有一个替代方案值得考虑:

import csv
from pprint import pprint
with open('newnoblanks.csv') as fp:
    root = csv.reader(fp)
    result = dict((date, float(a) * float(b)) for date, a, b in root)
    pprint(result)
使用以下数据文件:

19/08/2004,49.8458,44994500
20/08/2004,53.80505,23005800
23/08/2004,54.34653,18393200
输出为:

{'19/08/2004': 2242786848.1,
 '20/08/2004': 1237828219.29,
 '23/08/2004': 999606595.5960001}

我知道这一点已经得到了回答,但我觉得有一个替代方案值得考虑:

import csv
from pprint import pprint
with open('newnoblanks.csv') as fp:
    root = csv.reader(fp)
    result = dict((date, float(a) * float(b)) for date, a, b in root)
    pprint(result)
使用以下数据文件:

19/08/2004,49.8458,44994500
20/08/2004,53.80505,23005800
23/08/2004,54.34653,18393200
输出为:

{'19/08/2004': 2242786848.1,
 '20/08/2004': 1237828219.29,
 '23/08/2004': 999606595.5960001}

可能需要:
result[date].append(list(map(float,行[1:]))
可能需要:
result[date].append(list(map(float,行[1:]))