2017-09-21 12 views
0

私は、私の2DリストをPythonで繰り返し、要素を似たものにしたいと思います。インデックス(index)0のIDを持つデータベース(mySQL)をインデックス1のように更新したいとします。Pythonでリストをループする際にSQL UPDATE文を上書きしないようにする方法は?

list_one = [ [1,3], [2,5], [3,1], [4,5], [5,2] ] 


loop 1: UPDATE 1 with 3 
>> list_one[0] == 3 
loop 2: UPDATE 2 with 5 
>> list_one[1] == 5 
loop 3: UPDATE 3 with 1 
>> list_one[2] == 1 

## if you look closely, the first loop will be re-updated by the third loop because list_one[0] is currently == 3. 
## So loop 1 will also output as 1 along with loop 3. list_one[0] is overwritten. 
>> list_one[0] == 1 

どうしたらこのようなことを回避できますか?一度にすべてを更新するように書くことができるmySQLのクエリがありますか?もしあれば、私はいくつの配列を持っているのか分かりません。私はPython、django、およびmysqlを使用しています。助けてください、ありがとう!


答えて

1

私が正しくあなたを理解している場合、私は最初の入力データをきれいにしたい、私たちはあなたのケースのために、再更新されるリスト要素を削除することができますがきれい入力することの後、[3,1][5,2]ですこの入力で、[[1, 3], [2, 5], [4, 5]]も、上書きは同じIDに発生しません。

list_one = [ [1,3], [2,5], [3,1], [4,5], [5,2] ] 
list_two = [] 
for i in list_one: 
    if i[0] not in [el[1] for el in list_two]: 
     list_two.append(i) 
print(list_two) #here list_two will be [[1, 3], [2, 5], [4, 5]] 

list_twoは、あなたの更新を行い、その後、[[1, 3], [2, 5], [4, 5]]になります。

+0

ああ、2つのリストに分かれていますか?私はまた、インデックス[1]が最も低い要素から更新を開始すると、何も上書きされないようにします。あなたの考えを試してみましょう。どうもありがとう! – Marvin

+0

私はそれを試したところ、両方のリストは同じ要素を同じ順序で返します。 – Marvin

+0

@Marvin、上記の正しいコードを使用していますか? 'list_one'は' [1,3]、[2,5]、[3,1]、[4,5]、[5,2]] 'であり、コードを適用すると' list_two'は ' [[1,3]、[2,5]、[4,5]]。 –

関連する問題