创建字典时的奇怪问题

时间:2017-07-26 08:26:44

标签: python dictionary

我在创建字典时遇到问题。字典基本上是{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)

2 个答案:

答案 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