我想更新词典列表中特定键的值。
例如,我有以下词典列表(输入值):
deviceDynamics = [{'updated': '2019-07-10T10:27:44.763Z',
'created': '2019-07-10T10:27:44.763Z'},
{'updated': '2019-07-10T10:27:44.763Z',
'created': '2019-07-10T10:27:44.763Z'},
{'updated': '2019-07-10T10:27:44.763Z',
'created': '2019-07-10T10:27:44.763Z'}]
我的代码是-
for d in deviceDynamics:
timestamp = ((datetime.strptime(d['updated'], '%Y-%m-%dT%H:%M:%S.%fZ')) - datetime(1970, 1, 1)).total_seconds()
d = next(d for d in deviceDynamics)
d['updated'] = timestamp
print(deviceDynamics)
不是更改每个created
键值,而是更改第一个键值。以下是输出-
[{'created': '2019-07-10T10:27:44.763Z', 'updated': 1562754464.763}, {'created': '2019-07-10T10:27:44.763Z', 'updated': '2019-07-10T10:27:44.763Z'}, {'created': '2019-07-10T10:27:44.763Z', 'updated': '2019-07-10T10:27:44.763Z'}]
但是它并没有改变其他created
键的值...请提出任何建议
答案 0 :(得分:0)
删除将d设置为等于始终停留在第一项上的新迭代器的行。
for d in deviceDynamics:
timestamp = ((datetime.strptime(d['updated'], '%Y-%m-%dT%H:%M:%S.%fZ')) -datetime(1970, 1, 1)).total_seconds()
d['updated'] = timestamp
print(deviceDynamics)
如果您想使用更新后的KV对打印整个列表,请在for循环外添加一条打印语句。
for d in deviceDynamics:
timestamp = ((datetime.strptime(d['updated'], '%Y-%m-%dT%H:%M:%S.%fZ')) - datetime(1970, 1, 1)).total_seconds()
d['updated'] = timestamp
print(deviceDynamics)