gpt4 book ai didi

python - NameError:未定义名称 '` Timevalue`

转载 作者:行者123 更新时间:2023-12-03 00:02:35 25 4
gpt4 key购买 nike

我将数据存储在csv文件中,如下所示:

row = dict_items([('Time ': '2017-12-01T13:54:04'), ('Energy [kWh]': '0.01'), ('Voltage [V]': '221.64'), ('Current [A]': '0.08')])

现在我想像这样存储它:
('Time ': '2017-12-01T13:54:04', 'Energy [kWh]': '0.01'),
('Time ': '2017-12-01T13:54:04','Voltage [V]': '221.64'),
('Time ': '2017-12-01T13:54:04','Current [A]': '0.08')])

所以我写了下面的代码,我定义
    Device=""
Value=""
for key, value in row.items():
print(row.items())
if key == 'Time':
Timevalue = value
print(Zeitvalue)
Device = key
Value = value
doc = {'Device':Device, 'Measure':Value , 'Time':Timevalue }

我收到此错误:
NameError:名称“ Timevalue”未定义
我如何才能使 Timevalue变量成为全局变量以避免此问题?
谢谢

最佳答案

('Time ': '2017-12-01T13:54:04', 'Energy [kWh]': '0.01')语法不是有效的Python。假设您实际上想要一个字典列表,那么执行该转换并不难。

您首先需要获取时间戳,以便可以将其与其他每个项目组合在一起,然后可以将其从dict中删除,以便更轻松地将其余项目复制到新结构中。请注意,这会修改传递给函数的原始字典。如果您不希望这样做,则可以复制传入的字典,也可以在循环中放置if测试,以将数据复制到新结构中,从而跳过时间项。

def convert(old):
time_key = 'Time '
# Save the time
time_item = (time_key, old[time_key])
# Add remove it
del old[time_key]
# Copy remaining items to new dicts and save them in a list
return [dict([time_item, item]) for item in old.items()]

row = {
'Time ': '2017-12-01T13:54:04',
'Energy [kWh]': '0.01',
'Voltage [V]': '221.64',
'Current [A]': '0.08',
}

new_data = convert(row)
for d in new_data:
print(d)

输出
{'Time ': '2017-12-01T13:54:04', 'Energy [kWh]': '0.01'}
{'Time ': '2017-12-01T13:54:04', 'Voltage [V]': '221.64'}
{'Time ': '2017-12-01T13:54:04', 'Current [A]': '0.08'}

如果您不想变异或复制原始字典,请按以下步骤操作:
def convert(old):
time_key = 'Time '
# Save the time
time_item = (time_key, old[time_key])
# Copy other items to new dicts and save them in a list
return [dict([time_item, (key, val)])
for key, val in old.items() if key != time_key]

请注意,这效率较低,因为它必须测试每个键以确保它不是时间键。

要将数据保存在 OrderedDict列表中,我们需要稍微更改逻辑。我们还需要正确创建 OrderedDict,以使各项按所需顺序排列。
from collections import OrderedDict
from pprint import pprint

def convert(row):
time_key = 'Time '
time_value = row[time_key]
new_data = []
for key, val in row.items():
if key == time_key:
continue
new_data.append(OrderedDict(Device=key, Measure=val, Time=time_value))
return new_data

row = {
'Time ': '2017-12-01T13:54:04', 'Energy [kWh]': '0.01',
'Voltage [V]': '221.64', 'Current [A]': '0.08'
}

new_data = convert(row)
pprint(new_data)

输出
[OrderedDict([('Device', 'Energy [kWh]'),
('Measure', '0.01'),
('Time', '2017-12-01T13:54:04')]),
OrderedDict([('Device', 'Voltage [V]'),
('Measure', '221.64'),
('Time', '2017-12-01T13:54:04')]),
OrderedDict([('Device', 'Current [A]'),
('Measure', '0.08'),
('Time', '2017-12-01T13:54:04')])]

关于python - NameError:未定义名称 '` Timevalue`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47649972/

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