-1

我正在尝试用“0”替换电子表格中的“1”值。出于工作流程的原因,我想将 a 中的数据作为 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”对象,上面的值替换原始值。

4

2 回答 2

1

不是简单地替换line作品中的值吗?:

>>>for line in inreader:
...    for k,v in line.items():
...        line[k] = v.replace('1', '0')
...    print line
于 2013-05-21T15:32:54.967 回答
1
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'}]
result = []
for line in inreader:
    newline = dict([(k,v.replace('1', '0')) for k,v in line.items() ])
    result.append(newline)

print result

结果是

[{'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'}]
于 2013-05-21T15:33:31.907 回答