やりたい処理
Aの値とOUTのkeyが一致 →→Bにvalueを追加
Aの値とINのkeyが一致 →→Bからvalueと同じ要素を削除
OUT、INともに該当key無し →→更新無し
csvファイルに都度出力
python
1# サンプルデータ 2A=[['10'],['9'],['8'],['7'],['6'],['5'],['4'],['3'],['2'],['1']] 3B=[['a'],['b'],['c'],['d'],['e']] 4IN ={'8':'a','8':'b','2':'e']} 5OUT={'9':'f','2':'g','1':'h'}
イメージ
例)該当keyなし
A | B |
---|---|
10 | a |
10 | b |
10 | c |
10 | d |
10 | e |
例)該当keyがOUTにあり
A | B |
---|---|
9 | a |
9 | b |
9 | c |
9 | d |
9 | e |
9 | f |
例)該当keyがINにあり
A | B |
---|---|
8 | c |
8 | d |
8 | e |
8 | f |
例)該当keyなし
A | B |
---|---|
7 | c |
7 | d |
7 | e |
7 | f |
試したこと
python
1import itertools 2import numpy as np 3 4for i,dat in enumerate(A): 5 if dat[0] in OUT: 6 print('追加します',dat[0],OUT[dat[0]]) 7 B.append([OUT[dat[0]]]) 8 print('追B',B) 9 if dat[0] in IN: 10 print('削除します',dat[0],IN[dat[0]]) 11 print(IN[dat[0]]) 12 B.remove([IN[dat[0]]]) 13 print('減',B) 14 else: 15 print('どれも同じじゃない',dat[0]) 16 print('不変',B) 17 18 print(B) 19 np.savetxt(dat[0], B, fmt='%s', delimiter=',')
問題点
該当のkeyが2つ以上存在するときに、一つしか更新できない。
そもそものデータの持ち方を変えたほうが良いのでしょうか?
何かいいやり方などあればアドバイスお願いいたします。
追記
回答いただいたコードの
python
1B = [b for b in B if b not in IN[dat[0]]]
この部分がよく分かりませんでした、、、
python
1for b in B: 2 if b not in IN[dat[0]]: 3 B=b
どの部分で削除しているのでしょうか??お手数おかけいたしますが、教えていただけるとありがたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/05 22:34
2021/04/07 18:45
2021/04/07 18:57