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

如何将两个复杂字典转换为{ {...}, {...} }格式的结构?

问题解答

首先明确:在Python里,直接用{ {...}, {...} }这种集合形式存储字典是不可行的。

原因很简单:Python要求集合的元素必须是**可哈希(hashable)**的类型,而字典是可变类型(可随时修改键值对),属于不可哈希对象,直接把字典放进集合会抛出TypeError: unhashable type: 'dict'的错误。

替代方案

1. 仅需类似集合的显示效果

如果只是想要输出成{ {...}, {...} }的格式,可以手动格式化字符串:

all = [lis1, lis2]
# 格式化输出
print("{" + ", ".join(str(d) for d in all) + "}")

运行后会输出你想要的格式,但实际存储的还是列表结构。

2. 需要集合的特性(比如去重)

可以把字典转换成可哈希的类型,比如将字典的键值对转成排序后的元组(排序是为了保证相同内容的字典能转成一致的元组),再放进集合:

# 字典转成可哈希的元组
tuple1 = tuple(sorted(lis1.items()))
tuple2 = tuple(sorted(lis2.items()))
# 存入集合
dict_set = {tuple1, tuple2}
# 还原成字典
for t in dict_set:
    print(dict(t))

3. 常规存储需求

如果只是需要存储多个字典并支持访问,继续用列表是最合理的选择。列表支持索引访问(all[0]取第一个字典,all[1]取第二个),也支持增删改操作,是Python中存储多个字典的常规方式。

另外纠正你代码里的笔误:你定义的变量是lis1和lis2,但append时写的是list1和liste2,实际运行会报错,要改成all.append(lis1)和all.append(lis2)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 22:35:22