[英]Replace key values in a python csv Dictreader object
我正在尝试将电子表格中的“ 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']
理想情况下,我想用上面的值替换原始值创建一个新的“阅读器”对象。
不是简单地替换值line
的作品? :
>>>for line in inreader:
... for k,v in line.items():
... line[k] = v.replace('1', '0')
... print line
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'}]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.