用空值连接字典

时间:2016-11-24 19:02:37

标签: python dictionary merge concatenation

魔术命令和...词典在列表中创建。 " D1"是最完整的字典,因为所有行都有数据。 但是d2,d3和d4没有所有行的数据。

file1 used to created d1:
    key1    x1  x2  x3
    key2    y1  y2  y3
    key3    z1  z2  z3
    key4    w1  w2  w3
    key5    k1  k2  k3
    key6    q1  q2  q3

file2 used to created d2:
    key1    x4  x5  x6
    key2    y4  y5  y6
    key3    z4  z5  z6
    key6    q4  q5  q6

file3 used to created d3:
    key2    y7
    key3    z7
    key6    q7

file4 used to created d4:
    key3    z8
    key4    w8
    key5    k8

很抱歉放置示例文件,但我认为它对其他文件有用。

问题在于:

dicts = [d1, d2, d3, d4] # my dictionary list
new_dict = {}

for d in [d1, d2, d3, d4]:
    for key in d:
        if key not in new_dict:
            new_dict[key] = d[key]
        else:
            new_dict[key] += d[key]

for k, v in new_dict.iteritems():
    print (k+'\t'+ ('\t'.join(v)))

我的预期表格应该是这样的,当我没有价值时,空格会有空格。

    key1    x1  x2  x3  x4  x5  x6
    key2    y1  y2  y3  y4  y5  y6  y7
    key3    z1  z2  z3  z4  z5  z6  z7  z8
    key4    w1  w2  w3                  w8      
    key5    k1  k2  k3                  k8
    key6    q1  q2  q3              q7

但我能达到的最远的是:

    key1    x1  x2  x3  x4  x5  x6
    key2    y1  y2  y3  y4  y5  y6  y7
    key3    z1  z2  z3  z4  z5  z6  z7  z8
    key4    w1  w2  w3  w8      
    key5    k1  k2  k3  k8
    key6    q1  q2  q3  q7

如果他们没有'我可以如何包含空/空值。存在吗? 先感谢您。

1 个答案:

答案 0 :(得分:1)

对于每个字典d,您希望将new_dict中的列表填充为相同的大小,并使用空/空值(例如None)。< / p>

for d in ...:
    ...
    size = max(map(len, new_dict.values()))
    for value in new_dict.values():
        value += [None] * (size - len(value))

并支持建议考虑defaultdictsetdefault