我有两个字典,我想关联键值对。
例如:
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
答案 0 :(得分:1)
首先,正如评论所说,词典是无序的。如果您想合并订单重要的键(即您在a_dict
中插入的第一个键应与您在b_dict
中插入的第一个键匹配),则需要使用OrderedDict
。因此,当您从文件中读入时,需要将a_dict
和b_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_dict
和b_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
编辑:我无法验证这是否有效,因为我没有坐在电脑前。