gpt4 book ai didi

Python 文件,获取文件并查找平均值

转载 作者:行者123 更新时间:2023-11-30 23:18:35 26 4
gpt4 key购买 nike

我正在尝试创建一个Python程序来平均汽车的行驶速度。然而,该速度是在不同的道路上找到的(这些道路用数字 0-9 表示),文件可以具有任何道路编号并且可以是任何速度。

Example1.txt
0 40km
1 30km
0 67km
2 45km
2 23km

我想创建的程序取道路的平均值

average of 1 = 30
average of 0 = 35

依此类推,该文件可以包含任意多个配对,并且道路将在数字 0-9 之间这是我到目前为止所拥有的:

def traffic_summary(filename):
in_file = open(filename)
lines = in_file.readlines()
in_file.close()
return lines

def calc_traffic_avg(lines):
# Find out how long the file is
total_lines = len(lines)

# For every file line, find the charity and the amount contributed
avg = 0 # Nums + however many / How ever many integers there are
road_nums = []
master = []
road_speeds = []
for i in range(1, total_lines): # Omits the title lines
current_line = lines[i].rstrip("\n") #Removes the new line
current_line = current_line.split()

for j in range(len(current_line)):
current_word = current_line[j]

if "km" in current_word:
position = j
amount = int(current_word.rstrip('km'))
road_speeds.append(amount)
if not "km" in current_word:
road_nums.append(int(current_word))
print(road_nums, road_speeds)

我需要弄清楚如何平均道路上的速度。

最佳答案

您需要做的是跟踪每条道路的所有速度,而不仅仅是所有速度的列表和所有道路的列表。

实现此目的的一种方法是使用字典:键是道路,值是该道路的速度列表或集合*。您可以使用collections.defaultdict(list)(或…(set))来轻松构建。

而且,您还需要知道每种速度适用于哪条道路。你写东西的方式,你只是把每个单词当作一个完全独立的东西,忽略了它们成对出现的事实(以及其他有用的东西,比如每行总是只有一对的事实),这意味着你无法知道哪个与哪个搭配。

如果文件格式确实如描述的那样,您可以使其变得更简单:不要循环 current_line,而是使用 current_line[0] 是道路,current_line[1] 是速度。像这样:

road_speeds = collections.defaultdict(list)

# ...

# ... inside the loop

road, speed = current_line.split()
road = int(road)
speed = int(speed.rstrip('km'))
road_speeds[road].append(speed)

现在,当你完成整个事情后,你将拥有一个看起来像这样的字典:

{0: [40, 67], 2: [45, 23], 1: [30]}

那么,如何获得每条道路的平均速度?

for road, speeds in road_speeds.items():
average_speed = sum(speeds) / len(speeds)
print(road, average_speed)

请注意,如果您使用的是 Python 3.4+,您可能会发现使用 statistics.mean 比将 sum 除以 len 更具可读性或更明确.

<小时/>

* 你怎么知道是使用集合还是列表?基本上,如果以不同方式处理重复项具有概念意义,或者考虑有意义的条目顺序,那么您就有了一个列表;否则,你就有一套了。在这种情况下,如果在同一条道路上有两次速度相同的行程,您可能仍然希望将它们视为不同的行程,如 DSM指出,所以在这里列出列表可能更有意义。

关于Python 文件,获取文件并查找平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26621384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com