You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用dict.fromkeys创建字典时出现键值交叉污染问题求助

问题根源与解决方法

为什么会出现键值交叉污染?

你用dict.fromkeys创建新字典时踩了Python的常见坑:dict.fromkeys(dct.keys(), [])里的空列表[]是同一个内存对象,所有键都指向这个列表。不管你给哪个键的列表追加元素,都会修改这个共享的列表,最终所有键对应的列表内容完全一致。

正确的处理方案

1. 替换字典初始化方式

别用dict.fromkeys,改用以下两种方式创建每个键对应独立空列表的新字典:

方法一:循环逐个初始化

hdct = {}
for key in dct:
    hdct[key] = []

方法二:字典推导式(更简洁)

hdct = {key: [] for key in dct}

2. 完整的URL处理代码

替换初始化方式后,再执行URL处理逻辑就能得到正确结果:

dct = {'31212': ['websitea', 'websiteb'], '17759': ['websitec']}
# 正确初始化新字典,每个键对应独立空列表
hdct = {key: [] for key in dct}

for key, urls in dct.items():
    for url in urls:
        # 检查URL是否已包含http/https协议头
        if not url.startswith(('http://', 'https://')):
            processed_url = f'http://{url}'
        else:
            processed_url = url
        hdct[key].append(processed_url)

print(hdct)
# 输出结果:
# {'31212': ['http://websitea', 'http://websiteb'], '17759': ['http://websitec']}

内容的提问来源于stack exchange,提问作者patricknd90

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 09:47:39