我有一个清单
lst = []
我有dict条目
a= {'a':1,'b':2}
我希望以理解的方式编写一个for循环来填充列表。 我试过的是
lst.append(k,v) for (k,v) in a.items()
我需要将dict更新为
a = {'c':3, 'd':4}
然后再次更新列表lst
。
将元组添加为[('a',1)('b',2)('c',3)('d',4)]
迭代dict并填充列表的正确方法是什么?
答案 0 :(得分:1)
这就是列表理解的语法,应该做你想要的:
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}
答案 1 :(得分:1)
一种方法是:
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
类'.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()]
答案 2 :(得分:1)
有许多有效的方法可以实现这一目标。最简单的方法是使用
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<span id="counter">0</span>
替代方案包括使用a = {"a" : 1, "b" : 2}
lst = list(a.items())
函数,列表推导等。