使用单行 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
函数、列表理解等。
我有一个列表
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
函数、列表理解等。