0

長い質問で申し訳ありません。Python 3.2 には次のような辞書があります。

d = {'Paul ': [5, Counter({'i': 1, 'in': 1, 't': 1, 'fa': 1, 'cr': 1})],
            'Lisa ': [4, Counter({'f': 3, 'bo': 1})],
            'Tracy ': [6, Counter({'sl': 3, 'fi': 1, 'an': 1, 'piz': 1})],
            'Maria': [2, Counter({'t': 2})]}

キーの最初の値の各カウンター値を乗算し、それらの値をキーに追加する必要があります。

d2 = {'Paul': [5, {'i': (2, 10), 'in': (4, 20), 't': (3, 15), 'fa': (2, 10), 'cr': (2, 10)})], 
'Lisa': [4, {'f': (3, 12), 'bo': (8, 32)})], 
'Tracy': [6, {'sl': (3, 18), 'fi': (1, 6), 'an': (5, 30), 'piz': (2, 12)})]}

ネストされたディクショナリに、各キーの数値のペアがあるようにします。最初の数値は、そのキーに最初に割り当てられた値になり、2 番目の数値は、ディクショナリの最初の数値の乗算の結果になります。キーによって。上記のように、たとえば、 にiネストされたキーPaulの値は、元のファイルでは 1 であり、出力では同じ値に 10 が追加されます (10 は、キーの値に'i': 25 を掛けた値であり、キーの最初の値です'Paul' : 5, Counter({'i':2...)。など...タプルに変換してみました:

for key, lst in d.items():
    mult[key] = [lst[0], {k: (lst[0], float(v)/lst[0]) for k, v in lst[1].items()}]

しかし、たとえば、次のように間違った結果が得られました。

d2 = {'Paul ': [5, {'i': (5, 10), 'in': (5, 20), 't': (5, 15), 'cr: (5, 10}]...

各キーに起因する元の値が、乗算の結果の最初の値に置き換えられます。私は実際にこれを回避するためにさまざまなことを試みましたが、役に立ちませんでした。これを解決する方法についてのヒントはありますか。私はPythonを非常にゆっくりと学んでおり、これは大きな助けになるでしょう. ありがとうございました!

4

1 に答える 1

1
{k: (lst[0], float(v)/lst[0]) for k, v in lst[1].items()}

ここでlst[0]の最初の値は、辞書リストの最初の値ですが、カウンターの元の値ではありません。それはそうでしょうv

于 2013-11-12T15:02:36.000 に答える