如何从元组列表中的字典提取值并生成目标数值列表?
提取字典列表中的数值解决方案
嘿,我来帮你搞定这个问题!你的目标是从sc_dict里提取那些1组成列表[1,1,1],对吧?先看看你现有代码的问题:你生成的dict_part是字典的列表,不是单个字典,所以调用dict_part.items()肯定会报错——列表可没有items()这个方法哦。
正确的实现方式
这里有几种简单直接的方法来提取数值:
方法一:直接取字典值列表的第一个元素
因为每个子字典都只有一个键值对,我们可以直接遍历sc_dict中的每个元组,取出对应的字典后提取它的值:
sc_dict = [('n', {'rh': 1}), ('n', {'rhe': 1}), ('nc', {'rhex': 1})] L1 = [list(d.values())[0] for _, d in sc_dict] print(L1) # 输出: [1, 1, 1]
方法二:用迭代器更高效取值
如果想让代码更高效(尤其是处理大量数据时),可以用next()结合迭代器来取字典的第一个值:
sc_dict = [('n', {'rh': 1}), ('n', {'rhe': 1}), ('nc', {'rhex': 1})] L1 = [next(iter(d.values())) for _, d in sc_dict] print(L1) # 输出: [1, 1, 1]
这种方法避免了把值转换成列表,性能更好,而且如果遇到空字典,还可以添加默认值(比如next(iter(d.values()), None))来避免报错。
为什么你的原代码报错?
你写的dict_part = [sc[1] for sc in sc_dict]得到的是[{'rh': 1}, {'rhe': 1}, {'rhex': 1}]——这是一个包含3个字典的列表,不是单个字典。所以dict_part.items()会触发AttributeError,因为列表没有items()方法。如果要遍历这个列表里的每个字典,你需要逐个处理每个元素,而不是对整个列表调用字典的方法。
内容的提问来源于stack exchange,提问作者sara jones
相关产品推荐
相关产品推荐

