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

如何将含二元集合的列表转换为键对应值列表的字典

问题描述

我有一个元素为集合的列表:

[{'prox', 'SIN'},
 {'SIN', 'nerps'},
 {'SIN', 'malzon'},
 {'SIN', 'oportun'},
 {'ANAT', 'head'},
 {'ANAT', 'eyes'}]

想要转换成如下输出结构:

[{'SIN':['prox','nerps','malzon','oportun'],'ANAT':['head','eyes']}]

尝试了以下代码但执行失败:

d ={}
for dictionary in l:
    for key, (k, v) in dictionary.items:
        if key not in d:
            d[key] = {}
        d[key][k] = v

报错信息:set has no items method,遍历列表时发现元素是集合,不知道该如何处理。


错误原因

你误将列表中的集合当成了字典来处理,集合没有items()方法,这是报错的直接原因。每个集合包含两个字符串,其中一个是分类键(如SIN、ANAT),另一个是对应的值,我们需要把相同键的值收集到列表中。


解决方法

根据集合中元素的特征区分每个集合里的键和值,再用字典来收集对应的值。

方案一:通过大小写区分键值

如果分类键都是全大写字符串,可以用这个方法:

original_list = [{'prox', 'SIN'},
                 {'SIN', 'nerps'},
                 {'SIN', 'malzon'},
                 {'SIN', 'oportun'},
                 {'ANAT', 'head'},
                 {'ANAT', 'eyes'}]

result = {}
for s in original_list:
    # 将集合转为列表,方便访问元素
    items = list(s)
    # 判断哪个元素是键(全大写)
    if items[0].isupper():
        key, value = items[0], items[1]
    else:
        key, value = items[1], items[0]
    # 初始化键对应的列表,再添加值
    if key not in result:
        result[key] = []
    result[key].append(value)

# 包装成目标列表结构
final_output = [result]
print(final_output)

方案二:通过预设键集合区分(更严谨)

如果预先知道所有分类键,可以用这个方法避免大小写判断的误差:

original_list = [{'prox', 'SIN'},
                 {'SIN', 'nerps'},
                 {'SIN', 'malzon'},
                 {'SIN', 'oportun'},
                 {'ANAT', 'head'},
                 {'ANAT', 'eyes'}]

# 预先定义所有分类键
categories = {'SIN', 'ANAT'}
result = {}

for s in original_list:
    # 找出集合中属于分类键的元素
    key = next(item for item in s if item in categories)
    # 获取集合中剩下的那个值
    value = (s - {key}).pop()
    # 收集值到对应键的列表中
    if key not in result:
        result[key] = []
    result[key].append(value)

final_output = [result]
print(final_output)

输出结果

两种方案都会得到你想要的结构:

[{'SIN': ['prox', 'nerps', 'malzon', 'oportun'], 'ANAT': ['head', 'eyes']}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 14:33:21