python - 无法修改 python 列表中的字段

标签 python python-3.x if-statement

我有下面的字典列表:

categories=[
{'id':0,'value':8,'name':'Banking'},
{'id':1,'value':5,'name':'Home'},
{'id':2,'value':2,'name':'Travel'},
{'id':3,'value':4,'name':'Movies'},
{'id':4,'value':7,'name':'Hiking'},
{'id':5,'value':9,'name':'Food'},]

我正在尝试遍历上面列表中的所有值并将它们更新如下:

    for cat in categories:
        if(cat['value']==2):
            cat['value']=1
        if(cat['value']==3):
            cat['value']=4
        if(cat['value']==4):
            cat['value']=8
        if(cat['value']==5):
            cat['value']=12
        if(cat['value']==8):
            cat['value']=40
......
(from 2 till 10 in if condition)

这种方法的问题在于, 例如,名称 Banking 的 cat['value'] 是 8 所以上面的 if 条件会将值设置为 40。

稍后在循环中,电影的 cat['value'] 从 4 变为 8,稍后更新为 40 ..(现在它搞砸了 cat ['值'])

所以,这种更新方式肯定是不正确的。

如何根据这些多个条件更新列表的 cat['values']

如果需要,我可以将 if 条件框定为另一个列表 [{2:1},{3:4},{4:8},{5:12},....]

能否请您帮助我提供一种方法,让我可以根据上述条件更新我的 cat['values']

最佳答案

您还可以将转换写入字典,然后通过旧值访问字典并用字典的值覆盖。

conversions ={2:1,3:4,4:8,..}
for cat in categories:
    cat['values']=conversions[cat['values']]

关于python - 无法修改 python 列表中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34199710/

相关文章:

java - 在 if 语句中返回导致无法访问的代码错误

python - 将类实例序列化为 JSON

linux - Python 中的文件共享

python - 使用 dateutil 从 PST 转换为 UTC 的问题

python - 从数据库中检索数据并设置为 Kivy 中的文本输入字段和图像小部件,用于多屏应用程序!属性错误

javascript - 只需要验证——未捕获的语法错误 : Unexpected token else

python - 修复句子 : add space after punctuation but not after decimal points or abbreviations

python - 在 matplotlib Python 中设置不同的条形颜色

python - 根据 argparse 值调用具有不同参数的函数

java - 根据用户输入打印不同的句子