【问题标题】:Average values of certain keys in a dictionary字典中某些键的平均值
【发布时间】:2021-06-23 17:21:58
【问题描述】:

我有一个程序允许用户输入鱼雷的当量和速度:

#asking user for number of torpedos
count = int(input("Enter in number of functional torpedos: "))
#creating empty dictionary
torpedos = {}
#iterating through dictionary
for i in range(0,count):
  #user choses names of torpedos
  name = input("Enter in torpedo name: ")
  torpedos[name] = {}
  #user input values
  torpedos[name]["Yield"] = int(input("Enter in yield: "))
  torpedos[name]["Speed"] = int(input("Enter in speed: "))
  torpedos[name]["Side"] = input("Enter in side of ship: ")
print(torpedos)

我想知道如何计算鱼雷的平均当量和速度? 我对使用字典还很陌生,如果有任何帮助,我将不胜感激。

【问题讨论】:

  • sum(v["Yield"] for v in torpedos.values()) / len(torpedos),同样适用于"Speed"

标签: python loops dictionary input key


【解决方案1】:

要计算平均产量和速度,您可以使用statistics 模块:

from statistics import mean

# asking user for number of torpedos
count = int(input("Enter in number of functional torpedos: "))
# creating empty dictionary
torpedos = {}
# iterating through dictionary
for i in range(0, count):
    # user choses names of torpedos
    name = input("Enter in torpedo name: ")
    torpedos[name] = {}
    # user input values
    torpedos[name]["Yield"] = int(input("Enter in yield: "))
    torpedos[name]["Speed"] = int(input("Enter in speed: "))
    torpedos[name]["Side"] = input("Enter in side of ship: ")

# compute average yield, speed:
average_yield = mean(v["Yield"] for v in torpedos.values())
average_speed = mean(v["Speed"] for v in torpedos.values())

print(torpedos)
print("Average yield:", average_yield)
print("Average speed:", average_speed)

打印(例如):

Enter in number of functional torpedos: 2
Enter in torpedo name: A
Enter in yield: 10
Enter in speed: 20
Enter in side of ship: L
Enter in torpedo name: B
Enter in yield: 15
Enter in speed: 25
Enter in side of ship: R
{'A': {'Yield': 10, 'Speed': 20, 'Side': 'L'}, 'B': {'Yield': 15, 'Speed': 25, 'Side': 'R'}}
Average yield: 12.5
Average speed: 22.5

【讨论】:

    【解决方案2】:

    您可以为此使用列表推导:

    yield_average = sum(v["Yield"] for v in torpedos.values()) / len(torpedos)
    speed_average = sum(v["Speed"] for v in torpedos.values()) / len(torpedos)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多