gpt4 book ai didi

python - 追加到 Python 字典中的列表

转载 作者:IT老高 更新时间:2023-10-28 20:22:48 25 4
gpt4 key购买 nike

有没有更优雅的方式来编写这段代码?

我在做什么:我有 key 和日期。可以为一个键分配多个日期,因此我正在创建一个日期列表字典来表示这一点。以下代码工作正常,但我希望有一个更优雅和 Pythonic 的方法。

dates_dict = dict() 
for key, date in cur:
if key in dates_dict:
dates_dict[key].append(date)
else:
dates_dict[key] = [date]

我期待下面的工作,但我不断收到 NoneType has no attribute append 错误。

dates_dict = dict() 
for key, date in cur:
dates_dict[key] = dates_dict.get(key, []).append(date)

这可能与以下事实有关

print([].append(1)) 
None

但是为什么?

最佳答案

list.append 返回 None,因为它是就地操作并且您将其分配回 dates_dict[key]。所以,下次当你执行 dates_dict.get(key, []).append 时,实际上是在执行 None.append。这就是它失败的原因。相反,你可以简单地做

dates_dict.setdefault(key, []).append(date)

但是,我们有 collections.defaultdict仅用于此目的。你可以这样做

from collections import defaultdict
dates_dict = defaultdict(list)
for key, date in cur:
dates_dict[key].append(date)

如果在字典中找不到 key,这将创建一个新的列表对象。

注意:如果在字典中找不到键,defaultdict 将创建一个新列表,这将产生意想不到的副作用。例如,如果您只是想检索一个不存在的键的值,它将创建一个新列表并返回它。

关于python - 追加到 Python 字典中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26367812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com