0

私は辞書を持っています:

adict = {'key1':{'t1':{'thedec':.078, 'theint':1000, 'thechar':100},
                          't2':{'thedec':.0645, 'theint':10, 'thechar':5},
                          't3':{'thedec':.0871, 'theint':250, 'thechar':45},
                          't4':{'thedec':.0842, 'theint':200, 'thechar':37},
                          't5':{'thedec':.054, 'theint':409, 'thechar':82},
                          't6':{'thedec':.055, 'theint':350, 'thechar':60}}}

次のループを使用して、ベクトル内の「theint」の値をペアにして、最終的にそれらの統計計算を簡単に実行できるようにします。

for k1 in adict:
    x = []
    for t, record in sorted(adict[k1].items(), key = lambda(k,v):v['thedec']):
        x.append(record['theint'])
    y = [0]*(len(x)/2)
    for i in xrange(0,len(x),2):
        y[i/2] = sum(x[i:i+2])

1..append()を使用するよりも'theint'の値を抽出する方が速い方法があります。2。たとえば、すべての'theint'値の平均をとることができる方法があります。3 。辞書を2つにループして、最初にすべての値をコピーする手順をスキップして、すぐにそれらを合計ペアとしてベクトルに追加できるようにする方法があります。

助けてくれてありがとう。

4

1 に答える 1

3
>>> [x['theint'] + y['theint'] for x, y in zip(*[iter(sorted(adict['key1'].values(), key=operator.itemgetter('thedec')))] * 2)]
[759, 1010, 450]
于 2012-12-13T01:28:59.577 に答える