gpt4 book ai didi

python - 使用 Python 对列表进行切片以映射数据的问题

转载 作者:行者123 更新时间:2023-11-30 23:54:14 25 4
gpt4 key购买 nike

我的一项新职责要求我将数据从一种格式转换或映射为另一种格式,通常是从 xcel、csv 或 ms mdb 转换为 xml、sql 或按照我给出的规范,因此通常每个映射都是不同的。我开始学习 Python,以此作为 Lisp 的先驱。我每天都在学习更多的东西,并且实际上从工作中获得了乐趣。我目前正在尝试围绕生成器和迭代器进行思考,但还不确定何时需要它们,但这就是我陷入困境的地方。

使用切片内的值来测试某些条件的正确Pythonic方法是什么,如果满足则分配适当的值。当我尝试使用 <= 进行 if elif 时,我没有得到我想要的结果。下面的示例只是我为测试条件而创建的众多 if elif 语句之一。

#This works
hsa_id = ''
if "1" in csvitem[63:64]:
hsa_id = '<4 hours'
elif "2" in csvitem[63:64]:
hsa_id = '<4 hours'
elif "4" in csvitem[63:64]:
hsa_id = '4-8 hours'
elif "5" in csvitem[63:64]:
hsa_id = '4-8 hours'
elif "6" in csvitem[63:64]:
hsa_id = '4-8 hours'
elif "8" in csvitem[63:64]:
hsa_id = '8-16 hours'
elif "9" in csvitem[63:64]:
hsa_id = '8-16 hours'
elif "16" in csvitem[63:64]:
hsa_id = '16-24 hours'
elif "17" in csvitem[63:64]:
hsa_id = '16-24 hours'
elif "24" in csvitem[63:64]:
hsa_id = '16-24 hours'
elif "25" in csvitem[63:64]:
hsa_id = '>24 hours'
else:
hsa_id = ''
HOURSSINCEAWAKENING.append(hsa_id)

#This does not work. I tried removing the quotes. With and without the quotes I get all identical values.
hsa_id = ''
if csvitem[63:64] <= "3":
hsa_id = '<4 hours'
elif csvitem[63:64] <= "7":
hsa_id = '4-8 hours'
elif csvitem[63:64] <= "15":
hsa_id = '8-16 hours'
elif csvitem[63:64] <= "23":
hsa_id = '16-24 hours'
elif csvitem[63:64] > "23":
hsa_id = '>24 hours'
else:
hsa_id = ''
HOURSSINCEAWAKENING.append(hsa_id)

#Output from what does not work truncated for brevity as there are thousands of records.
['<4 hours', '<4 hours', '<4 hours', '<4 hours',...

最佳答案

您正在比较字符串,并且可能想要比较数字。使用 int()

if int(csvitem[63]) <= 3:

也许您还想重构您的代码以消除如此多的“如果”。例如,您可以执行以下操作:

data = [(3, '<4'), (7, '4-8'), (15, '8-16'), (23, '16-24'), (10000, '>24']

dattime = int(cvsitem[63])
hsa_id = ''
for mytime, text in data:
if dattime <= mytime:
hsa_id = '%s hours' % text
break

对于代码中的第一条 if 链也可以执行相同的操作。但是,在这种情况下,最好使用您的选项构建一个字典,然后将其用作:

choices_dict = {'1':'<4 hours', ...}
hsa_id = choices_dict.get(cvsitem[63], '')

关于python - 使用 Python 对列表进行切片以映射数据的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5251356/

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