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

Python如何向多个集合添加元素并解决AttributeError报错问题

问题解决说明

错误原因

  • {}在Python中默认初始化空字典,不是空集合,空集合必须用set()初始化
  • tuple是不可变数据类型,不支持add/append等修改操作,需要先用可变的列表暂存数据,处理完成后再转换为tuple匹配类型标注
  • 多词词条需要先按空格拆分后转成集合,不能直接添加原字符串

修改后可运行代码

from typing import Tuple, Set, List

MOCK_DATABASE = [
    {"python": True},
    {"no": True},
    {"hello world": True},
    {"java": False},
    {"ruby js": False},
    {"c#": False}
]

SINGLE_POSITIVE: Set[str] = set()
# 先用列表暂存数据,最后转换为tuple
MULTI_POSITIVE_TEMP: List[Set[str]] = []
SINGLE_NEGATIVE: Set[str] = set()
MULTI_NEGATIVE_TEMP: List[Set[str]] = []

for database_value in MOCK_DATABASE:
    for att, value in database_value.items():
        if value:
            if ' ' in att:
                # 拆分多词词条为集合后加入临时列表
                MULTI_POSITIVE_TEMP.append(set(att.split()))
            else:
                SINGLE_POSITIVE.add(att)
        else:
            if ' ' in att:
                MULTI_NEGATIVE_TEMP.append(set(att.split()))
            else:
                SINGLE_NEGATIVE.add(att)

# 转换为要求的tuple类型
MULTI_POSITIVE: Tuple[Set[str], ...] = tuple(MULTI_POSITIVE_TEMP)
MULTI_NEGATIVE: Tuple[Set[str], ...] = tuple(MULTI_NEGATIVE_TEMP)

# 按预期格式输出
print(f"SINGLE_POSITIVE: Set[str] = {{\n    {',\n    '.join(repr(i) for i in SINGLE_POSITIVE)}\n}}")
print(f"MULTI_POSITIVE: Tuple[Set[str], ...] = (\n    {repr(MULTI_POSITIVE[0])},\n)")
print()
print(f"SINGLE_NEGATIVE: Set[str] = {{\n    {',\n    '.join(repr(i) for i in SINGLE_NEGATIVE)}\n}}")
print(f"MULTI_NEGATIVE: Tuple[Set[str], ...] = (\n    {repr(MULTI_NEGATIVE[0])},\n)")

注:Set为无序容器,输出的元素顺序可能和示例不完全一致,属于正常现象。

运行输出

SINGLE_POSITIVE: Set[str] = {
    'python',
    'no'
}
MULTI_POSITIVE: Tuple[Set[str], ...] = (
    {'hello', 'world'},
)

SINGLE_NEGATIVE: Set[str] = {
    'java',
    'c#'
}
MULTI_NEGATIVE: Tuple[Set[str], ...] = (
    {'ruby', 'js'},
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 21:54:00