【发布时间】:2023-03-23 12:30:01
【问题描述】:
我有以下字典列表,其中包含 country 和相应服务器的值。
[
{'country': 'KR', 'values': ['Server1']},
{'country': 'IE', 'values': ['Server1', 'Server3', 'Server2']},
{'country': 'IE', 'values': ['Server1', 'Server3']},
{'country': 'DE', 'values': ['Server1']},
{'country': 'DE', 'values': ['Server2']},
]
现在我需要计算特定国家/地区的每台服务器的百分比。例如,对于IE,两个列表的总和为5。因此,对于Server1,百分比将计算为(2/5)*100,因为IE 有两个Server1,其余的类似,然后将Server1 的百分比添加到字典中,percent 为钥匙。所以基本上对于上述结构,输出变成了。
[
{"country": "KR", "percent": "100.0000", "values": ["Server1-100.0000"]},
{"country": "IE", "percent": "40.000", "values": ["Server1-40.0", "Server3-40.0", "Server2-20.0"]},
{"country" : "DE", "percent" : "50.0", "values" : ["Server1-50.0", "Server2-50.0"]},
]
我尝试了以下代码。
for i in range(len(response) - 1):
for j in range((i+1), len(response) - 1):
if response[i]['country'] == response[j]['country']:
print response[i]['country'], response[j]['country']
total = len(response[i]['values']) + len(response[j]['values'])
print total
for item in response[i]['values']:
for ktem in response[j]['values']:
if item == ktem:
if item == 'Server1':
response[i]['percent'] = 200/total
else:
response[i][percent] = 0
del response[j]
我坚持要进一步得到正确的百分比部分。有什么帮助吗?
【问题讨论】:
-
百分比的值在每个国家/地区不是唯一的:例如,对于“IE”,server1 和 3 的百分比应该是 40,但 server2 的百分比应该是 20 ...
-
是的,百分比字段仅填充了
Server1的百分比值。 -
请直接告诉我们您想要的结果。
-
我已经在问题中指定了输出。
-
虽然需要一些时间,但我有一个很好的解决方案!
标签: python dictionary data-structures aggregation