gpt4 book ai didi

Pythonic 变量赋值

转载 作者:行者123 更新时间:2023-11-28 20:43:15 25 4
gpt4 key购买 nike

目前我有一大段代码如下所示:

daily_stats.Turnover = int(row[2])
daily_stats.Cars = int(row[0])
daily_stats.Cash = int(row[29])
daily_stats.Card = int(row[33])
daily_stats.Other = int(row[31]) + int(row[35]) + int(row[37])
daily_stats.Exit = int(row[43])
daily_stats.Manual = int(row[42])
daily_stats.Open = int(row[47])

这持续了大约 30 行,虽然它完成了工作,但不是很整洁或 pythonic。

在 Python 中有更简洁的方法吗?

最佳答案

您可以将数据保存在字典中,然后在使用 setattr 设置 daily_stats 中的属性时对其进行迭代。

在您的字典中,值可以采用整数或列表(取决于它们是 row 中的单个值还是多个求和值)。因此,您可以使用 try:... except:... block 通过 setattr 设置合理的值。

下面是使用随机值的简化版本。请注意,它假定 daily_stats 支持设置普通的任意属性。

class DailyStats(object):
pass

row = ['10', '20', '30', '40', '50']

daily_stats = DailyStats()

items = {'Turnover':0,
'Cars':1,
'Cash':[2,3,4]}

for item, value in items.items():
try:
val = sum(int(row[val]) for val in value)
except TypeError:
val = int(row[value])
setattr(daily_stats, item, val)

print(daily_stats.Turnover) # 10
print(daily_stats.Cars) # 20
print(daily_stats.Cash) # 120

关于Pythonic 变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29075091/

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