-1

スプレッドシートの「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」オブジェクトを作成するのが理想的です。

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 に答える