3

辞書にする必要があるリストがあります。リストには、異なる値を持つ重複した (すぐに) キーがあります。これらのキーを見つけて新しい値を追加するにはどうすればよいですか?

list=[q:1,w:2,q:7]
dictionary= q:1,7
            w:2

前もって感謝します

4

1 に答える 1

9

辞書リストに値を作成して、次のようにします。

dictionary = {'q': [1, 7],
              'w': [2]
}

など。つまり、1 項目の値は 1 項目のリストです。これは、別の が'q'ある場合、これを行うことができることを意味します。

dictionary['q'].append(5)

dictionary['q']それがKeyError初めての場合を除き、setdefault代わりに次を使用します。

dictionary.setdefault('q', []).append(5)

したがって、入力リスト内のすべてのキーと値のペアを繰り返し処理し、それぞれに対して上記を実行する必要があります。

または、次のようになりたい場合もありdictionaryます。

dictionary = collections.defaultdict(list)

だからあなたはただすることができますdictionary['q'].append(5)-そしてそれはすべての点で上記と同じように機能します。元のリストを解析し、すべての値を適切に設定した後、辞書は次のようになります。

dictionary = {'q': [1, 7, 5]
              'w': [2, 8, 10, 80]
              'x': [3]
}

そして、あなたはやろうとしますprint(dictionary['y'])。どうなると思いますか?通常の dict と を使用するとsetdefault、これはエラーと見なされるため、 が発生しますKeyError。を使用するdefaultdictと、空のリストが出力されます。これらのうちどちらがコードにとってより意味があるかによって、どちらのコーディング方法を決定する必要があります。

于 2012-06-01T04:13:16.677 に答える