私はリストのリストを作成するアプリケーションを持っています。リストの2番目の要素は、ルックアップリストを使用して割り当てる必要があります。ルックアップリストもリストのリストで構成されています。ルックアップテーブルとしてリストのリストを使用し、新しいリストのリストの値を更新する
"all"メソッドを使用してリストの値と一致させました。リスト値がルックアップリストに存在する場合は、新しいリスト内の2番目の位置要素を更新する必要があります。しかし、そうではありません。 ==比較は、両方のリストにすべて存在していても、すべての要素に対してFalseの一致を生成します。
インデックス検索コマンドのさまざまな組み合わせも試しましたが、各リストの値をアンパックすることはできません。
私のコードは以下の通りです。目標は、newDataの "xxx"値をlookupListの数値で置き換えることです。
lookupList= [['Garry','34'],['Simon', '24'] ,['Louise','13'] ]
newData = [['Louise','xxx'],['Garry', 'xxx'] ,['Simon','xxx'] ]
#Matching values
for i in newData:
if (all(i[0] == elem[0] for elem in lookupList)):
i[1] = elem[1]
代わりに辞書を使うのはなぜですか? –
@MartijnPieters私はこれを検討していましたが、私のアプリケーションがリストのリストを作成しているのを見て、これが最善の選択肢かもしれないと思っていました。また、生成される文字列は非常に冗長である可能性があり、どのようにこれが辞書に影響するかわかりません。私は各リストで数百のリストを扱っています。辞書はこれを処理する最も効果的な方法ですか? – alkey
絶対に、間違いなく。新しい文字列オブジェクトはありません。リストから作成する辞書は、同じ文字列オブジェクトを参照します。 –