我正在尝试为学校项目建立一个带递归的字典。现在我觉得我已经找到了一般的结构,但是我无法弄清楚如何获得return语句来连接字典的各个部分。
我意识到通过构建一个空字典然后添加它可能会更容易,但我想知道是否有任何技巧我可以使用。
我正在寻找的输出是:
print(recur_join([1,2,3], ['a', 'b', 'c']))
>>> {1: 'a', 2 : 'b', 3 : 'c'}
我从另一个答案尝试了.update()和dict(basket_one,** basket_two)形式的东西。我可能用错了。我正在使用python 3。
以下是我的代码:
def recur_join(list1, list2):
if len(list1) == len(list2):
if len(list1) == 1:
return {list1[0]: list2[0]}
elif len(list1) > 1:
# dict(basket_one, **basket_two)
#return dict({list1[0]: list2[0]}, **recur_join(list1[1:],
list2[1:]))
return {list1[0]: list2[0]}.update(recur_join(list1[1:], list2[1:]))
else:
print('lists do not match in size')
return 0
任何帮助将不胜感激,如果以前得到回答,请抱歉。 谢谢!
答案 0 :(得分:2)
我建议您不要使用递归并改为使用字典理解:
def recur_join(list1, list2):
if len(list1) != len(list2):
print('lists do not match in size')
return
else: return {list1[i]:list2[i] for i in range(len(list1))}
对于递归路线(警告:非常难看):
def recur_join(list1, list2):
if len(list1) != len(list2):
print('lists do not match in size')
return
elif list1 == [] and list2 == []:
return {}
else:
return dict(list({list1[0]: list2[0]}.items()) + list(recur_join(list1[1:], list2[1:]).items()))
答案 1 :(得分:1)
“清理”递归解决方案。我会亲自使用Primusa的字典 理解解决方案。
def recur_join(list1, list2):
cur = {}
if len(list1) == len(list2) and len(list1) > 0:
cur = {list1[0]: list2[0]}
if len(list1) > 1:
cur.update(recur_join(list1[1:], list2[1:]))
else:
print('lists do not match in size')
return cur