如何计算从字典中获取的输入?

时间:2019-04-02 19:36:05

标签: python dictionary set

是python的新手,试图理解集合和字典,

我有一个字典(abc),我的目标是显示字典各部分的比例(棒[vaccum / broom],石头[vaccum / broom],Bones [vaccum / broom]):

abc =   {"Sticks" :{"brooms":8061, "vaccums":2721},
     "Stones":{"brooms":8399, "vaccums":2873},
     "Bones":{"brooms":7706, "vaccums":2654}}

我的输入:

  print(abc["Sticks(vaccums)"]]/abc["Sticks(brooms)"]])

导致错误: TypeError:“ builtin_function_or_method”对象不可下标

所需的输出:

Stones 0.342
Bones  0.344
Sticks 0.338

我的代码有什么问题?通过从字典获取输入进行计算的语法是什么

3 个答案:

答案 0 :(得分:0)

您可以这样做(但不会产生您提供的号码):

abc =   {"Sticks" :{"brooms":8061, "vaccums":2721},
     "Stones":{"brooms":8399, "vaccums":2873},
     "Bones":{"brooms":7706, "vaccums":2654}}

averages = { k: sum(v.values())/len(v) for k,v in abc.items() }

# {'Sticks': 5391.0, 'Stones': 5636.0, 'Bones': 5180.0}

vac2broom = { k: v["vaccums"]/v["brooms"] for k,v in abc.items() }

# {'Sticks': 0.33755117231112763, 'Stones': 0.3420645314918443, 'Bones': 0.3444069556189982}

或特定项目:

avg = sum(abc["Sticks"].values())/len(abc["Sticks"])

ratio = abc["Sticks"]["vaccums"] / abc["Sticks"]["brooms"]

答案 1 :(得分:0)

似乎您要访问字典的值。 关于您的问题,“露丝”看起来有些随意。

abc是一个嵌套字典。 就像这样:abc ['Key'],并且密钥的值是字典{“ brooms”:8061,“ vaccums”:2721}。

因此您可以在abc ['Sticks']上使用values()函数,因为它将以字典作为其value,而字典又具有您想要的值。

   sum(abc['Sticks'].values()) / len(abc['Sticks'].values())

   sum(abc['Stones'].values()) / len(abc['Stones'].values())

   sum(abc['Bones'].values()) / len(abc['Bones'].values())

您应该遍历那些具有循环或列表理解能力的人。

已编辑:

似乎就是您想要的,只是访问嵌套字典的值。

abc['Bones']['vaccums'] / abc['Bones']['brooms']

再次,如果要处理大型词典,请将其放在列表理解/循环中。

答案 2 :(得分:-2)

使用

遍历字典
for part in myDictionary.items(): 

并对每个结果进行数学计算。