检查字典列表中的键并创建新列表

时间:2019-02-13 04:11:11

标签: python list dictionary

我有一个列表p和一个字典q,如下所示。

p = ['a', 'b', 'c', 'd']
q = [{'a':1, 'b':2}, {'b':3, 'c':4},{'c':5,'a':6},
      {'d':7,'a':8}]

pq的长度始终相同。

我想要一个类似于以下内容的列表输出。

a = [1,2,0,0]
b = [0,3,4,0]
c = [6,0,5,0]
d = [8,0,0,7]

我尝试了以下

a = []
b = []
c = []
d = []

for i in range(len(p)):
    if p[i] == q[i].keys():
        a.append(q[i].values())
    else:
        a.append(0)

等等,对于所有空列表,依此类推,但似乎没有将值附加到列表中。

1 个答案:

答案 0 :(得分:6)

您可以使用打开包装:

p = ['a', 'b', 'c', 'd']
q = [{'a':1, 'b':2}, {'b':3, 'c':4},{'c':5,'a':6}, {'d':7,'a':8}]
a, b, c, d = [[i.get(c, 0) for c in p] for i in q]

输出:

[1, 2, 0, 0]
[0, 3, 4, 0]
[6, 0, 5, 0]
[8, 0, 0, 7]