【问题标题】:I would like to get all specific values from a dictionary based on a value我想根据值从字典中获取所有特定值
【发布时间】:2022-02-02 03:29:40
【问题描述】:

我有这么大的字典

{0: {'age': 19, 'sex': 'female', 'bmi': 27.9, 'children': 0, 'smoker': 'yes', 'region': 'southwest', '收费': 16884.924}, 1: {'age': 18, 'sex': 'male', 'bmi': 33.77, 'children': 1, 'smoker': 'no', 'region': 'southeast' , '收费': 1725.5523}

等等...我想根据地区计算所有年龄并计算平均值... 我尝试了一个函数并通过 dct 循环它,如果 region == (我想要的那些)它返回平均值,我想我离我的目标很远......请问有什么想法吗?

我想在不导入任何东西的情况下这样做

谢谢。

【问题讨论】:

  • 请添加您尝试过的代码、结果,并说明问题所在
  • @Christophe 感谢您的关注,我整理出来是因为我的错误是循环遍历整个 dct 而不是他的值,没有必要循环遍历......这就是为什么我没有得到它......: ) 再次感谢您的帮助

标签: python


【解决方案1】:

您可以在循环中单独访问所有值并使用此代码计算平均值;

for value in yourDict.values():
        if value["region"]=="Region You Want":
            #calculate the mean in there
            #you can access the all ages value["age"]

或者基本上,您可以通过查询区域来创建一个列表,并使用此代码计算结果列表的平均值;

ageList=[value["age"] for value in myDict.values() if value["region"]=="southeast"]
print(sum(ageList)/len(ageList))

【讨论】:

  • 谢谢你,我走了很长一段路,毫无意义.. wunderbar!
【解决方案2】:

一种解决方案可以是首先循环一次以过滤给定的数据集并创建一个以区域为键的列表字典

然后遍历 crated 字典并计算列表中值的平均值

mean_ages = {}

for data in d.values():
    region = data['region']
    if region not in mean_ages: mean_ages[region] = [] #Create empty list to store ages
    mean_ages[region].append(data['age'])

for region in mean_ages:
    l = mean_ages[region]
    mean_ages[region] = sum(l)/len(l)

一次运行这些循环然后为所有区域生成它可能更有效,如果您需要特定区域的值,您可以阅读字典。

【讨论】:

  • 这也很好,您已经完成了检查,如果这些值是您将它们放入列表中的值,那就太好了!感谢您向我展示这种方法
  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 2016-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多