【发布时间】:2021-07-01 03:27:51
【问题描述】:
所以我试图在迭代它们的同时修改 dict 的键,这似乎是 python 并不真正希望你做的事情。因此,我想问,我怎样才能绕过 python 的限制?这是我的第一个代码,问题是 dict.items() 不允许您修改 dict 的键,而是让您查看 dict。
d = {k: dict(zip(v['EST'], v['value'])) for k, v in df1.groupby('variable')}
order = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
Days = [key for key in d]
Days.sort(key=order.index)
templist = []
Better version
for day in Days:
for key, value in d[day].items():
if 'EST' not in key :
key = ''.join(('Time ', key))
if 'Time' in key: templist = key.rsplit(":", 1)
key = ''.join(templist)
print(f"Yes this is the {day}, {key} EST and the {value}")
由于这并没有修改字典的原始值,我尝试在迭代时修改它们,但也得到了一个 RuntimeError: dictionary changed size during iteration
for j in d[i]:
if 'EST' not in j :
d[j] = ''.join(('Time ', j))
基本上,我想修改 dict 的键,但我不被允许,那我该怎么办?谢谢。
【问题讨论】:
-
更改
dict中的键相当于删除现有条目并添加具有相同值的新条目。取决于你想做什么,这可能很繁琐。不要更改现有dict的键,而是循环通过.items()并构建一个新的。 -
@BoarGules 问题是因为我修改了密钥,在修改密钥后再次循环 .items() 只会给我旧值。除了我能够在修改值时以某种方式构建一个新的字典。
标签: python loops dictionary iteration