替换python对象中的键值

替换python对象中的键值,python,csv,dictionary,Python,Csv,Dictionary,我正在尝试将电子表格中的“1”值替换为“0”。出于工作流程的原因,我希望以csv Dictreader对象的形式读取中的数据。然而,我被这种数据类型弄糊涂了,并且很难让代码正常工作。以下是输入: >>> print inreader [{'PERSON1': '1', 'PERSON2': '1', 'GENE': 'TEST1', 'PERSON4': '1', 'PERSON3': '1'}, {'PERSON1': '1', 'PERSON2': '0', 'GENE':

我正在尝试将电子表格中的“1”值替换为“0”。出于工作流程的原因,我希望以csv Dictreader对象的形式读取中的数据。然而,我被这种数据类型弄糊涂了,并且很难让代码正常工作。以下是输入:

>>> print inreader
[{'PERSON1': '1', 'PERSON2': '1', 'GENE': 'TEST1', 'PERSON4': '1', 'PERSON3': '1'}, {'PERSON1': '1', 'PERSON2': '0', 'GENE': 'TEST2', 'PERSON4': '0', 'PERSON3': '0'}, {'PERSON1': '1', 'PERSON2': '0', 'GENE': 'TEST3', 'PERSON4': '0', 'PERSON3': '1'}, {'PERSON1': '0', 'PERSON2': '0', 'GENE': 'TEST4', 'PERSON4': '0', 'PERSON3': '0'}, {'PERSON1': '-', 'PERSON2': '0', 'GENE': 'TEST5', 'PERSON4': '-', 'PERSON3': '0'}, {'PERSON1': '2', 'PERSON2': '1', 'GENE': 'TEST9', 'PERSON4': '2', 'PERSON3': '1'}]
下面的代码将只适当地更新这些值,但我不知道如何根据这些规则更新整个Dictreader对象

>>>for line in inreader:
>>>    newline = [v.replace('1', '0') for k,v in line.items() ]
>>>    print newline

['0', '0', 'TEST0', '0', '0']
['0', '0', 'TEST2', '0', '0']
['0', '0', 'TEST3', '0', '0']
['0', '0', 'TEST4', '0', '0']
['-', '0', 'TEST5', '-', '0']
['2', '0', 'TEST9', '2', '0']

理想情况下,我希望创建一个新的“inreader”对象,用上面的值替换原始值。

不是简单地替换
行中的值就行了吗

>>>for line in inreader:
...    for k,v in line.items():
...        line[k] = v.replace('1', '0')
...    print line
结果是

[{'PERSON2': '0', 'PERSON3': '0', 'PERSON1': '0', 'PERSON4': '0', 'GENE': 'TEST0'}, {'PERSON2': '0', 'PERSON3': '0', 'PERSON1': '0', 'PERSON4': '0', 'GENE': 'TEST2'}, {'PERSON2': '0', 'PERSON3': '0', 'PERSON1': '0', 'PERSON4': '0', 'GENE': 'TEST3'}, {'PERSON2': '0', 'PERSON3': '0', 'PERSON1': '0', 'PERSON4': '0', 'GENE': 'TEST4'}, {'PERSON2': '0', 'PERSON3': '0', 'PERSON1': '-', 'PERSON4': '-', 'GENE': 'TEST5'}, {'PERSON2': '0', 'PERSON3': '0', 'PERSON1': '2', 'PERSON4': '2', 'GENE': 'TEST9'}]

您如何处理听写器的输出?是否只替换脚本中的1和0?或者,您希望创建一个新文件,将1s替换为0s吗?我不一定需要创建一个新文件,但我希望有一个选项以防万一。我使用了很多带有标题的平面文件,CSV模块非常适合这种类型的东西有时候小东西是最难的…谢谢,这很有效
[{'PERSON2': '0', 'PERSON3': '0', 'PERSON1': '0', 'PERSON4': '0', 'GENE': 'TEST0'}, {'PERSON2': '0', 'PERSON3': '0', 'PERSON1': '0', 'PERSON4': '0', 'GENE': 'TEST2'}, {'PERSON2': '0', 'PERSON3': '0', 'PERSON1': '0', 'PERSON4': '0', 'GENE': 'TEST3'}, {'PERSON2': '0', 'PERSON3': '0', 'PERSON1': '0', 'PERSON4': '0', 'GENE': 'TEST4'}, {'PERSON2': '0', 'PERSON3': '0', 'PERSON1': '-', 'PERSON4': '-', 'GENE': 'TEST5'}, {'PERSON2': '0', 'PERSON3': '0', 'PERSON1': '2', 'PERSON4': '2', 'GENE': 'TEST9'}]