私は2016年と2017年のそれぞれに同じ5つのキーを持つデータの2つの辞書を持っています。私は、各キーの値のパーセンテージを辞書の値の合計に換算し、各キーの2つのパーセンテージをラベルに結合したいと考えています。私は以下のようにすることができましたが、私の方法は多くのループを必要とし、やや控えめです。私は、コードをより効率的にするためにコードを凝縮または書き直す方法を探しています。Python - For Loopsを組み合わせる
UsersPerCountry, UsersPerPlatform, UsersPerPlatform2016, UsersPerPlatform2017 = Analytics.UsersPerCountryOrPlatform()
labels = []
sizes16 = []
sizes17 = []
sumc1 = 0
sumc2 = 0
percentages = []
for k, v in dict1.iteritems():
sumv1 += v
for k, v in dict1.iteritems():
v1 = round(((float(v)/sumc1) * 100), 1)
percentages.append(v1)
labels.append(k)
sizes16.append(c)
for k, v in dict2.iteritems():
sumv1 += v
for k, v in dict2.iteritems():
v2 = round(((float(v)/sumc1) * 100), 1)
percentages.append(v2)
sizes17.append(c)
for i in range(5):
labels[i] += (', ' + str(percentages[i]) + '%' + ', ' + str(percentages[i + 5]) + '%')
これは、ラベルは次のようになります。
EDIT:を私は今、変数宣言を追加しています。私はすべての変数を空のリストまたは0に設定することについてのハッシュされた行で十分だと思いました。
完全なコードスニペットを投稿してください。例えば'sumc1'と' c'は決して宣言されていません... – brianpck
'Pandas'を使うことを考えましたか?それぞれの辞書を 'pd.DataFrame'に入れ、パンダのベクトル化されたメカニズムを使って2行で同じ計算を行うことができます。 'df = pd.DataFrame(dict1)'と 'df2 = pd.DataFrame(dict2)'を組み合わせたり、単一の 'df = pd.concat([df1、df2]、keys = [2016,2017] ) '。 –