我想總結每個城市的價值,并總結全省的價值。現在我可以總結每個城市的價值,但我不知道如何總結全省的價值。
city_value = [["Edinburgh",100],["Manchester",100],["London",100],["Manchester",100]]
province_dict = {"England":["Manchester","London","Exeter"], "Scotland":["Edinburgh","Glasgow","Dundee"]}
# Create a dictionary with city names as key
list2 = []
for i in city_value:
list2.append(i[0])
dict1 = {i:[] for i in list2}
print (dict1)
# Assign area into city
for i in list1:
for keys,values in dict1.items():
if i[0] == keys :
values.append(i[1])
dict2 = dict(zip(dict1.keys(), [[sum(item)] for item in dict1.values()]))
print (dict2)
uj5u.com熱心網友回復:
對于城市,您在第一個串列上迭代 2 次以初始化它,然后在另一個迭代中迭代,最后另一個時間復雜度約為 O(n2 3n)
只需迭代一次即可構建city_sum,然后構建省一
from collections import defaultdict
city_value = [["Edinburgh", 100], ["Manchester", 100], ["London", 100], ["Manchester", 100]]
province_dict = {"England": ["Manchester", "London", "Exeter"], "Scotland": ["Edinburgh", "Glasgow", "Dundee"]}
city_sum = defaultdict(int)
for city, val in city_value:
city_sum[city] = val
province_sum = defaultdict(int)
for province, cities in province_dict.items():
for city in cities:
province_sum[province] = city_sum.get(city, 0)
print(city_sum) # {'Edinburgh': 100, 'Manchester': 200, 'London': 100}
print(province_sum) # {'England': 300, 'Scotland': 100}
uj5u.com熱心網友回復:
您可以使用字典理解sum來對每個省內的城市求和。
city_value = [["Edinburgh",100],["Manchester",100],["London",100],["Manchester",100]]
province_dict = {"England":["Manchester","London","Exeter"], "Scotland":["Edinburgh","Glasgow","Dundee"]}
sum_city = {}
for k, v in city_value:
sum_city[k] = sum_city.get(k, 0) v
print(sum_city) # {'Edinburgh': 100, 'Manchester': 200, 'London': 100}
sum_prov = {k: sum(sum_city.get(city, 0) for city in v) for k, v in province_dict.items()}
print(sum_prov) # {'England': 300, 'Scotland': 100}
uj5u.com熱心網友回復:
city_value = [["Edinburgh",111],["Manchester",777],["London",333],["Dundee",444]]
province_dict = {"England":["Manchester","London","Exeter"], "Scotland":["Edinburgh","Glasgow","Dundee"]}
province_total_dict = {}
for key, value in province_dict.items():
province = []
for city in value:
for cv in city_value:
if cv[0] == city:
province.append(cv[1])
province_total_dict[key]= sum(province)
print(province_total_dict)
output; {'England': 1110, 'Scotland': 555}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/339423.html
