我在创建字典时遇到问题。字典基本上是{booknumbers:list-of-2-tuples}。这里,pair也是一个2元组,路径是一个列表。
def pairs2dict(pairs, paths):
dic = {}
for pair in pairs:
booknumber = getbooknumber(pair)
path = getpath(pair)
if booknumber in dic:
dic[booknumber].append([pair[1], paths[booknumber])
else:
dic[booknumber] = [pair[1], paths[booknumber])
return dic
这给了我一个完美无缺的词典,除了每个书号下面的第一个2元组被拆分,并且是两个独立的元素。
以下一点解决了这个问题,但我不知道为什么我首先遇到这个问题。感谢您的任何信息!
for booknumber in dic:
dic[booknumber][0] = [dic[booknumber][0], dic[booknumber][1]]
dic[booknumber].pop(1)
答案 0 :(得分:0)
在if语句中,您要将列表附加到列表中,但在else语句中,您将原始数据附加到列表中。您需要事先将初始数据包装到列表中。
phpinfo()
答案 1 :(得分:0)
您可以使用defaultdict
:
from collections import defaultdict
def pairs2dict(pairs, paths):
dic = defaultdict(list)
for pair in pairs:
booknumber = getbooknumber(pair)
path = getpath(pair)
dic[booknumber].append([pair[1], paths[booknumber])
return dic