【发布时间】:2019-05-08 10:10:17
【问题描述】:
我有一本字典,我想遍历并更改其值,但我认为更改长度可能会导致错误,有什么好的方法可以做到这一点吗?
示例:
d = {'a':'orange','b':'pineapple','c':'dragonfruit'}
rating = {'orange':3, 'pineapple':4, 'dragonfruit':4.5, 'apple':3, 'pear': 3.5}
for key, value in d.items():
if some conditions met:
del d['a'] or d['e']='apple' # (or is not operator, i mean literally one of the operation add or delete item...)
例如:
for key, value in d.items():
if rating[value]<4:
del d[key]
或
d = {'a':['orange'],'b':['pineapple','peach'],'c':['dragonfruit']}
rating = {'orange':3, 'pineapple':4, 'dragonfruit':4.5, 'apple':3, 'pear': 3.5, 'peach': 5}
for key, value in d.items():
rating_sum = sum([ rating[v] for v in value])
if rating_sum > 8 and len(value)>1:
d['e'] = d[key].pop(-1)
可能不是最好的例子...意味着字典的长度在循环中发生变化。
【问题讨论】:
-
我假设最后一行是伪代码?
-
否。不要这样做。做一个听写理解:
d2 = dict(k,v) for k in d if not cond(k)@jpp 说。 -
@zvone:另一个问题有点不同,它更多的是询问“为什么在迭代时删除项目会在字典而不是列表上给出错误?”而这个问题是“我怎样才能在字典上真正做到这一点?”
-
@smci 如果一个问题是“为什么我不能做X”,另一个是“我该怎么做X”,那么它们是相同的,因为两者的答案都是“不要做X,而是做Y”
标签: python dictionary iteration