|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
请教鱼油高手:
有两个长度相等的字典dict1和dict2,要把它们组成一个新的字典,key是两个组成的tuple,value是对应的值组成的tuply。比如:{'a': 1, 'b': 2, 'c': 3} 和 {'a': 1, 'd': 2, 'b': 2}组成{('a','a'):(1, 1), ('b','d'):(2, 2), ('c', 'b'):(3, 2)}
我写的代码如下:
def dict_couple(dict1,dict2):
"""key in 2 dicts, combine them and return\
a new dict with both keys and values in pair"""
dict3 = {}
dict3 = dict3.fromkeys(zip(dict1.keys(),dict2.keys()),\
zip(dict1.values(),dict2.values()))
print(dict3)
dict1 = eval(input('key in the first dict:'))
dict2 = eval(input('key in the 2nd dict:'))
dict_couple(dict1,dict2)
在IDLE的运行如下:
key in the first dict:dict(r=1,b=2,c=5,k=7,f=3)
key in the 2nd dict:dict(a=9,m=4,n=6,l=0,p=8)
{('r', 'a'): <zip object at 0x0000014A3F720980>, ('b', 'm'): <zip object at 0x0000014A3F720980>, ('c', 'n'): <zip object at 0x0000014A3F720980>, ('k', 'l'): <zip object at 0x0000014A3F720980>, ('f', 'p'): <zip object at 0x0000014A3F720980>}
不知道问题出在哪里了?为何value返回的是可迭代对象?如何改正?
.fromkeys() 肯定不能这么用,它是给多个keys指定一个统一值(默认值)的。
直接这样,就行了 In [11]: dict(zip(zip(d1.keys(), d2.keys()) , zip(d1.values(), d2.values())))
Out[11]: {('a', 'a'): (1, 1), ('b', 'd'): (2, 2), ('c', 'b'): (3, 2)}
|
|