python使用另一个相同长度的列表更新字典列表

时间:2017-11-16 11:15:23

标签: python python-3.x dictionary

我正在尝试使用相同长度的另一个列表a更新字典列表b,每个字典应添加一个与b中的值相对应的键位置,

for x in range(len(a)):
    a[x]['val'] = b[x]

我想知道是否有更有效/简洁的方法来做到这一点

3 个答案:

答案 0 :(得分:3)

可以尝试使用zip()

for ai, bi in zip(a, b):
    ai["val"] = bi

答案 1 :(得分:0)

如果您使用的是python 3.x,则可以使用列表推导来动态创建新列表:

a = [{'A': 1}, {'B': 2}]
b = [3,4]
[{**d, **{"val":b[i]}} for i, d in enumerate(a)]

输出:

[{'A': 1, 'val': 3}, {'B': 2, 'val': 4}]

但请注意,这不适用于python 2.7。另一种选择是使用列表理解来更新每个字典:

>>> a = [{'A': 1}, {'B': 2}]
>>> b = [3, 4]
>>> [x.update({"val":b[i]}) for i,x in enumerate(a)]
[None, None]
>>> a
[{'A': 1, 'val': 3}, {'B': 2, 'val': 4}]

答案 2 :(得分:0)

export default class Clients {
    static userEnum = {
        SMALL: 1,
        MEDIUM: 2,
        LARGE: 3,
        properties: {
            1: { name: "Admin", value: 1 },
            2: { name: "Manager", value: 2 },
            3: { name: "Standard", value: 3 }
        }
    };

    static clientName(value) {
        return Clients.userEnum.properties[value].name;
    }
}

check here