2015-11-03 2 views
0

Я думаю, что я на правильном пути, но есть что-то здесь не так:Добавить словарные значения вместе, когда дублируется

import csv 
from itertools import islice 

merged = {} 

with open('test.csv') as csvfile: 
    dictReader = csv.DictReader(csvfile) 
    dictReader.fieldnames = "Part", "Qty" 
    headlessDict = islice(dictReader, 2, None) 
    for row in headlessDict: 
     print(row['Part'].split(',')[0], row['Qty']) 
    # for d in headlessDict: 
    #  for k, v in d.items(): 
    #   if k not in merged: 
    #    merged[k] = [] 
    #   merged[k].append(v) 

Я открываю файл CSV, а затем назначая новые заголовки (часть & кол-во) к ним , Затем я использую модуль islice, чтобы пропустить первые две строки, поскольку они мне не нужны, и, наконец, повторить и распечатать результаты, которые выглядят так (после того, как вырезали некоторые дополнительные детали в первом столбце с разделом) :

A434343 19 
B983943 22 
DK8383E39 37 
... 

то, что я пытаюсь достичь, то есть, «Эй, если есть дубликаты в наборе результатов (т.е. там может быть два или более A434343, но с разным количеством перечисленного) я в конечном счете хочу чтобы взять количество и добавить их вместе и создать новый словарь с очищенным списком.

Я застрял сейчас и могу использовать некоторую помощь. Прошу посоветовать о мастерских!

+0

Написать псевдокод: Если ключ не в Словаре ... еще ... – John3136

+0

я сделал это, и это, как я начал с закомментированным кодом, но Я застрял. знак равно – LuckyURE

ответ

0

Вы, кажется, достаточно хорошо добавляете значения. Можете ли вы просто добавить их вместо этого? Это закомментированный код может выглядеть следующим образом:

 for k, v in d.items(): 
      if k not in merged: 
       merged[k] = 0 
      merged[k] += int(v)