Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用字典编字典_Python_Loops_Dictionary_Iteration - Fatal编程技术网

Python 用字典编字典

Python 用字典编字典,python,loops,dictionary,iteration,Python,Loops,Dictionary,Iteration,我是python的初学者,我很难从一本字典中制作一本字典。我有一本字典,我想知道如何用这本字典再编一本字典,每种食物的平均价格。字典如下所示: food = { 1: ['Pasta Primavera', 'Italian', 1000, 8.50], 2: ['Pizza Margarita', 'Italian', 1200, 7.50], 3: ['Hamburger', 'American', 1100, 5.50], 4: ['Milkshake'

我是python的初学者,我很难从一本字典中制作一本字典。我有一本字典,我想知道如何用这本字典再编一本字典,每种食物的平均价格。字典如下所示:

food = {
    1: ['Pasta Primavera', 'Italian', 1000,  8.50],
    2: ['Pizza Margarita', 'Italian', 1200, 7.50],
    3: ['Hamburger', 'American', 1100,  5.50],
    4: ['Milkshake', 'American', 700, 3.00],
    5: ['Bruscetta', 'Italian', 500, 6.00],
    6: ['Sauerkraut', 'German', 300,  4.00 ],
    7: ['Sausage', 'German' , 500, 7.00],
    8: ['Apfelstrudel', 'German', 750, 4.50],
    9: ['Sauerbraten', 'German', 950, 10.00],
}
newdict = {'Italian':7.33, 'American':4.25, 'German': 6.375 }

最后一个值是价格,食品类型是指数1。我正在寻找这样的输出:

food = {
    1: ['Pasta Primavera', 'Italian', 1000,  8.50],
    2: ['Pizza Margarita', 'Italian', 1200, 7.50],
    3: ['Hamburger', 'American', 1100,  5.50],
    4: ['Milkshake', 'American', 700, 3.00],
    5: ['Bruscetta', 'Italian', 500, 6.00],
    6: ['Sauerkraut', 'German', 300,  4.00 ],
    7: ['Sausage', 'German' , 500, 7.00],
    8: ['Apfelstrudel', 'German', 750, 4.50],
    9: ['Sauerbraten', 'German', 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,方法:

我们首先将当前数据转换为一个列表:

[137]中的
food.values()
出[137]:
意大利面,意大利面,1000,8.5,
['Pizza Margarita','Italian',1200,7.5],
[汉堡包','美国',1100,5.5],
[‘奶昔’、‘美国’、700、3.0],
['Brusetta','Italian',500,6.0],
德国泡菜,德国泡菜,300,4.0,
[‘香肠’、‘德语’、500、7.0],
['Apfelstrudel','German',750,4.5],
['Sauerbraten','German',950,10.0]]
现在,我们可以在每个元素上循环,将我们想要的信息添加到字典中:


所有_数据={}
因为我在食物中。价值观()
尝试:
#将价格(最后一个元素)添加到国家/地区的所有项目列表中(i[1])
所有_数据[i[1]]。追加(i[-1])
除KeyError外:
#如果我们还没有这个国家,就创造它
所有_数据[i[1]=[i[-1]]
这给了我们:

[144]中的
:所有_数据
出[144]:
{'American':[5.5,3.0],
“德语”:[4.0,7.0,4.5,10.0],
“意大利语”:[8.5,7.5,6.0]}
最后,我们可以将每个字典元素替换为其平均值:

适用于所有_数据中的国家:
值=所有_数据[国家]
平均值=总和(值)/浮动(长度(值))
#将列表替换为平均值
所有数据[国家]=平均值
这将产生您所需要的:

In [147]: all_data
Out[147]: {'American': 4.25, 'German': 6.375, 'Italian': 7.333333333333333}

如果您要求结果为两个小数点,还可以使用c样式格式将其转换为字符串:
'%.2f'%mean

查看
itertools.groupby
。嘿,达克,请阅读以下内容:您应该自己诚实地尝试解决这个问题,并将代码放入问题中。StackOverflow不是一个代码编写服务。这真的可以帮助我可视化正在发生的事情。非常清楚。非常感谢。请不要给出一个不费力的家庭作业问题的答案。这是一个错过的学习机会。请不要放弃一个不努力的家庭作业问题的答案。这是一个错失的学习机会。@Alexander说,给出一个答案是可以的,但他们应该帮助理解将来如何回答类似的问题。