gpt4 book ai didi

python - 遍历名称列表并使用最小/最大值创建新列表

转载 作者:太空宇宙 更新时间:2023-11-04 00:57:17 25 4
gpt4 key购买 nike

我正在尝试做一些非常基本的事情。我有一个包含 2 行、日期和名称的制表符分隔文本文件。日期为 Excel 数字格式。这是一个例子...

Bill to Name    Date
James Doe 41929
Jane Doe 41852
Adam Adamson 42244
Adam Adamson 41529

我需要做的是遍历姓名列表,找到每个人的最小日期和最大日期之间的差异,并将其输出到另一个列表。输出列表应该类似于上面的输入列表,除了每个名称只有一个并且数字会更小。不是每个人都有一个以上的约会对象,有些名字只有一个,有些名字有 30 个。我几乎只能通过输入文件来完成。

input_dir = "C:\\Users\\Intern\\Documents\\"
data_file = "Python.txt"
output_dir = "C:\\Users\\Intern\\Documents\\"
output_file_all = "Tenure.txt"

#testing file input
with open(input_dir + data_file,'r') as ifile :
for idx, row in enumerate(ifile.readlines()) :
print(row)
if idx > 0 :
break

这很好用,但循环让我很困惑。我假设它会类似于“对于 ifile 中的每个名称,Tenure = max(date)-min(date)”,但我认为这不会正确迭代。

最佳答案

使用 csv module如果输入文件结构变得更复杂,将来会有所帮助。字典似乎是解决这个问题的正确数据结构。 Defaultdict 使我们免于再写几行。

import csv
from collections import defaultdict

d = defaultdict( list )

input_file = 'a.csv'
output_file = 'b.csv'

with open( input_file, 'rb' ) as infile:
reader = csv.reader(infile, delimiter='\t')
next(reader, None) # skip the header
for row in reader:
d[ row[0] ].append( int(row[1]) )

with open( output_file, 'wb' ) as outfile:
writer = csv.writer(outfile, delimiter='\t')
for key, value in d.items():
writer.writerow( [key, max(value) - min(value)] )

输出为"b.csv":

Jane Doe        0
James Doe 0
Adam Adamson 715

关于python - 遍历名称列表并使用最小/最大值创建新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34514875/

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