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

如何在Python字典中为单个键设置多个值?含字符排序场景

嘿,这个场景我太熟悉啦——你要的其实是让字典的每个键对应一个列表,这样就能把所有同组的原始字符串都存进去!之前直接赋值或者调用append失败,是因为一开始键对应的不是列表,自然没法直接追加元素。下面给你三种实用的实现方式,挑你喜欢的来用:

方法1:手动检查并初始化列表

这是最基础的写法,逻辑清晰,适合刚接触字典的朋友:

words = ["flow", "wolf", "listen", "silent", "apple"]
anagram_dict = {}

for word in words:
    # 把字符串排序后转成字符串当键(列表不能做字典键,必须转成可哈希的类型)
    sorted_key = ''.join(sorted(word))
    # 如果键不存在,先初始化一个空列表
    if sorted_key not in anagram_dict:
        anagram_dict[sorted_key] = []
    # 把原始字符串追加到对应列表里
    anagram_dict[sorted_key].append(word)

print(anagram_dict)
# 输出结果:
# {'flow': ['flow', 'wolf'], 'eilnst': ['listen', 'silent'], 'aelpp': ['apple']}

方法2:用collections.defaultdict(最省心)

Python标准库的collections模块里有个defaultdict,能帮你自动处理“键不存在时初始化默认值”的问题,代码会简洁很多:

from collections import defaultdict

words = ["flow", "wolf", "listen", "silent", "apple"]
# 指定默认值类型为列表
anagram_dict = defaultdict(list)

for word in words:
    sorted_key = ''.join(sorted(word))
    # 直接append就行,键不存在时会自动创建空列表
    anagram_dict[sorted_key].append(word)

# 如果需要转成普通字典(不是必须,defaultdict本身也能正常用)
print(dict(anagram_dict))

方法3:用dict.setdefault()(一行式简洁写法)

字典自带的setdefault()方法可以一步完成“检查键是否存在→不存在则设置默认值→返回对应值”的操作,适合追求代码简洁的场景:

words = ["flow", "wolf", "listen", "silent", "apple"]
anagram_dict = {}

for word in words:
    sorted_key = ''.join(sorted(word))
    # 一行搞定初始化+追加
    anagram_dict.setdefault(sorted_key, []).append(word)

print(anagram_dict)

小提醒

为什么要用''.join(sorted(word))当键?因为sorted(word)返回的是字符列表,而列表是不可哈希的,不能作为字典的键;转成字符串后就变成了可哈希类型,才能正常当作键来用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:56:54