Python:如何在更新时将DictReader行作为字典添加到列表中

Python:如何在更新时将DictReader行作为字典添加到列表中,python,dictionary,Python,Dictionary,我的代码基本上只是检查DictReader的每一行(dicts列表),并将重复项放入dicts的RejectedEvents列表中,然后返回结果,这是一个重复数据消除的dicts。我还需要为每一行被拒绝的事件添加一个原因,因为我以后也会因为其他原因而拒绝。这段代码和问题本身一样,都是不言自明的,但不是解决方案;问题是标记为#PROBLEM的行,当我取出update语句时,问题消失了;使用update语句时,会分配null,如果没有null,则会分配行,因此更新会把它搞砸 def GetScrub

我的代码基本上只是检查DictReader的每一行(dicts列表),并将重复项放入dicts的RejectedEvents列表中,然后返回结果,这是一个重复数据消除的dicts。我还需要为每一行被拒绝的事件添加一个原因,因为我以后也会因为其他原因而拒绝。这段代码和问题本身一样,都是不言自明的,但不是解决方案;问题是标记为#PROBLEM的行,当我取出update语句时,问题消失了;使用update语句时,会分配null,如果没有null,则会分配行,因此更新会把它搞砸

def GetScrubbedEventData(MetricID, EventsRaw, RejectEvents):
    start = time.time()
    pass_count = 0
    fail_count = 0

    result = {}
    for row in csv.DictReader(EventsRaw, delimiter=","):
        try:
            #check duplicate
            result[row['AssetID']]
            Reason = {"RejectedFor": "Duplicate AssetID in same file."}
            RejectEvents.append(dict(row).update(Reason)) #PROBLEM
            fail_count += 1
        except KeyError:
            row['EventStart'] = scrub.Date(row['EventStart'])
            row['EventEnd'] = scrub.Date(row['EventEnd'])
            result[row['AssetID']] = row
            pass_count += 1

更新行,然后追加更新的行,而不是
.Update
的返回值,该值为
None

for row in csv.DictReader(EventsRaw):
    ...
    row.update(Reason)
    RejectEvents.append(row)
或者,您可以直接在dict
上设置新的dict,而无需创建单值dict
原因

for row in csv.DictReader(EventsRaw):
    ...
    row["RejectedFor"] = "Duplicate AssetID in same file."
    RejectEvents.append(row)

哇,谢谢。。。我可以发誓我试过了,但认为失败了,因为我是在更新DictRead中的一行,而不是DictRead。。。测试之后,当我使用dict(row.update)(原因)时,第一个解决方案失败了。。。。但是去掉dict()它就工作了。。。谢谢。
dict
调用不起作用,因为它更新了一个新的未引用的dict,而不是