繁体   English   中英

创建字典时出现奇怪的问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM