结合两个词典的键值对

时间:2016-07-29 21:33:02

标签: python-2.7

我有两个字典,我想关联键值对。

例如:

a_dict = [a:1, b:1, c:2, d:3]

b_dict = [z:1, xy:2, gf:4, fd:4]

我怎样才能将它们组合起来打印如下:

a, 1, z, 1

b, 1, xy, 2

c, 2, gf, 4

d, 3, fd, 4

逻辑我曾经获得过dicts的键值对:

a_dict = dict()
for i in file:
    a = i.split("|")[3]
    if a in a_dict.keys():
        a_dict[a] += 1
    else:
        a_dict[a] = 1

for a in a_dict.keys():
    b_dict = dict()
    for i in file:
        if a not in i:
            continue
        else:
            b = i.split("|")[5]
            if b in b_dict.keys():
                b_dict[b] += 1
            else:
                b_dict[b] = 1

2 个答案:

答案 0 :(得分:1)

首先,正如评论所说,词典是无序的。如果您想合并订单重要的键(即您在a_dict中插入的第一个键应与您在b_dict中插入的第一个键匹配),则需要使用OrderedDict。因此,当您从文件中读入时,需要将a_dictb_dict更改为OrderedDict个对象。以下是如何打印密钥的示例:

from collections import OrderedDict

a_dict = OrderedDict()
b_dict = OrderedDict()

a_dict["a"] = 1
a_dict["b"] = 1
a_dict["c"] = 2
a_dict["d"] = 3

b_dict["z"] = 1
b_dict["xy"] = 2
b_dict["gf"] = 4
b_dict["fd"] = 4

for a_key, b_key in zip(a_dict, b_dict):
    print a_key, ", ", a_dict[a_key], ", ", b_key, ", ", b_dict[b_key]

输出:

a ,  1 ,  z ,  1
b ,  1 ,  xy ,  2
c ,  2 ,  gf ,  4
d ,  3 ,  fd ,  4

注意这不会始终使用普通词典(尽管可能取决于键)。将上面的答案更改为初始化a_dictb_dict,如下所示:

a_dict = dict()
b_dict = dict()

你可能会看到一个不同的输出,其中键不匹配。我的控制台给了我:

a ,  1 ,  xy ,  2
c ,  2 ,  gf ,  4
b ,  1 ,  z ,  1
d ,  3 ,  fd ,  4

故事的道德:在订单无关紧要时,请不要使用dict。它们只是键值存储,其键的顺序是任意的。

答案 1 :(得分:0)

步骤1)将它们转换为列表。

dict1=dict1.items()
dict2=dict2.items()

步骤2)循环遍历它们(假设两个dict(现在列表)大小相同):

for i in range(len(dict1)):
>print(dict1[i][0],dict1[i][1],dict2[i][0],
dict1[i][1])

我为格式化而道歉,因为我在手机上这样做了。

NB> = tab

编辑:我无法验证这是否有效,因为我没有坐在电脑前。