我有兩個分別來自2016和2017的數據字典,它們具有相同的5個鍵。我想計算每個鍵的值與其字典中的值之和的百分比,然後將每個單獨鍵的兩個百分比加入標籤。我已經設法做到了這一點,但我的方法需要很多循環,似乎有點笨重。我正在尋找凝聚或重寫我的代碼的方法,以使其更有效率。Python - 合併循環
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]) + '%')
這是標籤的樣子:
編輯:我現在已經增加了變量聲明。我認爲將所有變量設置爲空列表或0的散列行就足夠了。
請張貼一個完整的代碼片段。例如'sumc1'和'c'永遠不會被宣佈...... – brianpck
你有沒有考慮過使用'Pandas'?您可以將每個字典放入一個'pd.DataFrame'中,並使用熊貓的向量化機制來執行兩行相同的計算。即'df = pd.DataFrame(dict1)'和'df2 = pd.DataFrame(dict2)',或者甚至將它們組合成單個'df = pd.concat([df1,df2],keys = [2016,2017] )'。 –