从Python

时间:2017-06-08 11:33:48

标签: python dictionary

我有一个Python Dict,如下所示:

a = {"a":1,"b":2,"c":3,"f":4,"d":5}

我有一个如下列表:

b= ["b","c"]

我想要做的是从键盘中选择键:值对,用b中的键。 所以输出应该是一个字典,如:

out = {"b":2,"c":3}

我可以简单地创建另一个字典并使用key:value pair和迭代更新它但是我有RAM问题而且字典a非常大。 b包括几点,所以我认为从一个不起作用弹出。我该怎么做才能解决这个问题?

编辑:Out实际上是a的更新。所以我会将a更新为。

谢谢:)

3 个答案:

答案 0 :(得分:2)

如果您真的想要使用列表中的键创建新词典,那么您可以使用词典理解。

a = {"a":1,"b":2,"c":3,"f":4,"d":5}
b = ["b", "c"]

out = {x: a[x] for x in b}

如果KeyError中的任何元素实际上不是b中的键,则提升a会失败。

答案 1 :(得分:1)

如果修改现有的字典没有任何问题,请尝试:

out = {}
for key in b:
        out[key] = a.pop(key)

这个不会占用任何额外的空间,因为我们正在将旧的dict所需的值传输到新的dict,并且还可以解决选择性弹出缓慢的问题(因为我们不是遍历除了必需的选择之外的所有部分。

答案 2 :(得分:1)

你可以这样做,

a = {"a":1,"b":2,"c":3,"f":4,"d":5}
b= ["b","c"]

out = {item:a.get(item)for item in b}

这不会引发任何错误,但如果该项目不在,则会添加''