使用单行 for 循环将字典项附加到列表

Append dict items to a list with a single line for loop

我有一个列表

lst = []

我有字典条目

a= {'a':1,'b':2}

我想以理解的方式编写一个 for 循环来填充列表。 我试过的是

lst.append(k,v) for (k,v) in a.items()

然后我需要将字典更新为

a = {'c':3, 'd':4}

然后再次更新列表lst

将元组添加为 [('a',1)('b',2)('c',3)('d',4)] 遍历字典并填充列表的正确方法是什么?

这就是列表理解的语法,并且应该满足您的要求:

lst = [(k,v) for k,v in a.items()]

一般来说 list comprehension 是这样工作的:

someList = [doSomething(x) for x in somethingYouCanIterate]

输出

>>> lst
[('a', 1), ('b', 2)]

P.S. 除了提出的问题之外,您还可以通过简单地调用 :

lst = a.items()

这将再次为您提供 (key, value) 对字典项的元组列表。

编辑

在你更新问题之后,因为你正在更新字典并想要列表中的键值对,你应该这样做:

a= {'a':1,'b':2}
oldA = a.copy()
#after performing some operation
a = {'c':3, 'd':4}
oldA.update(a)
# when all your updates on a is done
lst = oldA.items() #or [(k,v) for k,v in oldA.items()]
# or instead of updating a and maintaining a copy
# you can simply update it like : a.update({'c':3, 'd':4}) instead of a = {'c':3, 'd':4}

一种方法是:

a = {"a" : 1, "b" : 2}

lst = [(k, a[k]) for k in a]

a = {"c" : 3, "d" : 4}

lst += [(k, a[k]) for k in a]

其中lst的内容为[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

或者,使用 dict class' .items() 函数来完成同样的事情:

a = {"a" : 1, "b" : 2}

lst = [b for b in a.items()]

a = {"c" : 3, "d" : 4}

lst += [b for b in a.items()]

有很多有效的方法可以实现这一点。最简单的方法是使用

a = {"a" : 1, "b" : 2}
lst = list(a.items())

备选方案包括使用 zip 函数、列表理解等。