将dict项附加到具有单行for循环的列表中

时间:2017-10-25 03:54:01

标签: python list dictionary for-loop dictionary-comprehension

我有一个清单

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并填充列表的正确方法是什么?

3 个答案:

答案 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()) 函数,列表推导等。