如何解决用字典制作字典
我是python的初学者,现在很难用字典制作字典。我有一本字典,想知道如何用该字典制作每种食物平均价格的另一本字典。字典看起来像这样:
food = {
1: ['Pasta Primavera','Italian',1000,8.50],2: ['Pizza Margarita',1200,7.50],3: ['Hamburger','American',1100,5.50],4: ['Milkshake',700,3.00],5: ['Bruscetta',500,6.00],6: ['Sauerkraut','German',300,4.00 ],7: ['Sausage',7.00],8: ['Apfelstrudel',750,4.50],9: ['Sauerbraten',950,10.00],}
newdict = {'Italian':7.33,'American':4.25,'German': 6.375 }
或类似的东西
newdict = {'Italian':[Average:7.33],'American':[Average:4.25],'German':[Average: 6.375]}
我假设您可以使用循环使之成为可能。
编辑:我知道这不是代码编写服务。很抱歉寻求帮助。如果可以的话,我会删除此帖子。
解决方法
为了计算任何统计信息,您应该创建一个数据样本。在这种情况下,您可以为每种国家/地区的食物建立样本词典。在Python中,defaultdict
具有一个很大的优点,即您不需要检查键是否在dict
中。之后,您将获得一个具有计算平均值的新字典。
代码示例:
from collections import defaultdict
d = defaultdict(list)
for record in food.values():
d[record[1]].append(record[-1])
average = {k: mean(v) for k,v in d.items()}
,
回到基础知识,香草python,方法:
我们首先将当前数据转换为列表:
In [137]: food.values()
Out[137]:
[['Pasta Primavera','Italian',1000,8.5],['Pizza Margarita',1200,7.5],['Hamburger','American',1100,5.5],['Milkshake',700,3.0],['Bruscetta',500,6.0],['Sauerkraut','German',300,4.0],['Sausage',7.0],['Apfelstrudel',750,4.5],['Sauerbraten',950,10.0]]
现在,我们可以遍历每个元素,将我们想要的信息添加到字典中:
all_data = {}
for i in food.values():
try:
# add price (last element) to a list of all items in country (i[1])
all_data[i[1]].append(i[-1])
except KeyError:
# if we dont have this country yet,create it
all_data[i[1]] = [i[-1]]
这给了我们:
In [144]: all_data
Out[144]:
{'American': [5.5,'German': [4.0,7.0,4.5,10.0],'Italian': [8.5,7.5,6.0]}
最后,我们可以将每个字典元素替换为其平均值:
for country in all_data:
values = all_data[country]
mean = sum(values)/float(len(values))
# replace the list with the mean value
all_data[country] = mean
应满足您的需求
In [147]: all_data
Out[147]: {'American': 4.25,'German': 6.375,'Italian': 7.333333333333333}
如果需要将结果保留到小数点后两位,还可以使用c样式格式将其转换为字符串:'%.2f'%mean
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。