字典更新将替换原始值

2024-10-03 21:34:59 发布

您现在位置:Python中文网/ 问答频道 /正文

每当我收到一个新的url,我都会尝试将它和当前时间一起添加到我的字典中。 但是,当我使用update()方法时,它会用我添加的新值替换原始值,因此字典中现在唯一的内容就是新值(而不是旧值)

以下是我的代码的简短版本:

    if domain not in lst:
        lst.append(domain)
        domaindict = {} 
        listofdomains.append(domaindict)
        domaindict.update({domain:datetime.now().strftime('%m/%d/%Y %H:%M:%S')})
    if domain in lst:
        domindex = lst.index(domain) 
        listofdomains[domindex].update({domain:datetime.now().strftime('%m/%d/%Y %H:%M:%S')})

lst是迄今为止域名的列表,而listofdomains是包含独立域的所有词典的列表(每个词典都有域名和时间)

当我尝试打印域列表时:

print(listofdomains)

它只打印字典中新添加的域和URL。我还尝试使用其他方法更新词典,如this question的答案中所述,但我的词典仍然无法正常运行

为什么原始键/值对消失?


Tags: 方法in列表datetimeif字典domain时间
1条回答
网友
1楼 · 发布于 2024-10-03 21:34:59

最简单的结构可能是一系列列表:

data = {domain1:[time1, time2, ...], domain2:[...] ...}

您可以简单地使用defaultdict构建它,在需要时动态创建空列表。您的代码是:

from collections import defaultdict

data = defaultdict(list)

您的整个代码变得非常简单:

data[domain].append(datetime.now().strftime('%m/%d/%Y %H:%M:%S'))

相关问题 更多 >