2
デフォルトの辞書があります。私は多くの文字列をループし、キーの下のディレクトリに数値として追加しますが、その値がすでに辞書にない場合に限ります。だから私のコードは次のようになります。この値が辞書に存在しない場合は値を追加してください
from collections import defaultdict
strings = ["val1", "val2", "val2", "val3"]
my_dict = defaultdict(list)
key = 0
for string in strings:
if string not in my_dict.itervalues():
my_dict[key].append(string)
key += 1
print my_dict
を、すべての文字列が辞書に追加されているので、このように、動作していないようです:
defaultdict(<type 'list'>, {0: ['val1'], 1: ['val2'], 2: ['val2'], 3: ['val3']})
「val2の」を追加すべきではありません
defaultdict(<type 'list'>, {0: ['val1'], 1: ['val2'], 2: ['val3']})
私が間違って何をやっている:それはこのようになりますでしょうか?
私は単純な例。これらの式の結果を推測してみてください:[1]で1、[[1]]で[1]、[[1]]で[1]。パターンを識別できる場合は、この知識を実際の問題に適用することができます。 – Kevin
私は最終的に何を達成しようとしているのか、なぜdefaultdictを使っているのかは分かりません。 'dict(zip(range(len(dedup))、dedup))'を削除するにはどうすれば 'dedup = set(strings)'を使ってリストを辞書にするのですか? – raphv
@ケビンありがとうございました、今はどのように動作するのですか – GohanP