[英]weird issue when creating a dictionary
我在创建字典时遇到问题。 该字典基本上是{booknumbers:list-of-2-tuples}。 在这里,对也是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
这给了我一个很好的dic,除了每个书号下的第一个2元组是分开的,并且是两个独立的元素。
以下代码解决了该问题,但我不知道为什么首先遇到该问题。 感谢您提供任何信息!
for booknumber in dic:
dic[booknumber][0] = [dic[booknumber][0], dic[booknumber][1]]
dic[booknumber].pop(1)
在if语句中,您将列表添加到列表中,但是在else语句中,您将原始数据添加到列表中。 您需要预先将初始数据包装到列表中。
if booknumber in dic:
dic[booknumber].append([pair[1], paths[booknumber])
else:
dic[booknumber] = [[pair[1], paths[booknumber]]]
您可以通过使用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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.