1

既存の辞書に基づいて新しい辞書を作成しようとしています: この新しい辞書では、各値の末尾に増加する整数を追加したいと考えています。私の辞書にはいくつかのキーがありますが、値が繰り返されます。

次のコードを使用しています。これは、私が達成しようとしているものの例です。

list_1 = [10,20,30,40,50,60]
list_2 = ["a","a","b","b","c","c"]

dict = dict(zip(list_1,list_2))

another_dict = {}
counter = 0
for keys in dict.keys():
    if dict[keys] == "a" :
        counter += 1
        another_dict[keys] = "a_" + str(counter)
    if dict[keys] == "b":
        counter += 1
        another_dict[keys] = "b_" + str(counter)
    if dict[keys] == "c":
        counter += 1
        another_dict[keys] = "c_" + str(counter)

print(another_dict)

そして、私はこの結果を得ています

* {40: 'b_1', 10: 'a_2', 50: 'c_3', 20: 'a_4', 60: 'c_5', 30: 'b_6'}*

取得したいとき

* {40: 'b_1', 10: 'a_2', 50: 'c_1', 20: 'a_1', 60: 'c_2', 30: 'b_2'}.*

dict の順序は重要ではありません。ご協力ありがとうございました。敬具。イボ

4

2 に答える 2

1

これでうまくいくはずです:

another_dict = {}
counters = {}
for key,value in dict.items():
    counter = counters.get(value, 0) + 1
    counters[value] = counter
    another_dict[key] = "%s_%d" % (value, counter)

counters各値のカウントを追跡します。.get()初期化されていない場合は、ゼロから始まります (辞書呼び出しのおかげです)。

于 2013-08-17T00:21:42.083 に答える