如何提取列表中字典内以price开头的键对应的值?
解决提取列表字典中以price开头的键对应值的问题
嘿,我来帮你搞定这个麻烦!你说用startswith()没生效,大概率是遍历字典的方式出了问题,我给你针对你提供的示例数据写了两种可行的实现方案:
方法1:分步循环(更易理解和调试)
这种方式步骤清晰,适合刚接触这类操作的场景:
# 你的原始数据列表 data = [ {'dateandtime-ecf9af72-7af8-447e-a071-2ababb0eb139': DatetimeWithNanoseconds(2019, 12, 30, 9, 34, 19, 297000, tzinfo=<UTC>), 'price-4a589779-264a-4396-a527-8fa7067f4c2d': 35.56, 'price': 0, # 省略其他键值对... }, # 省略其他字典... ] # 用来存储提取到的价格值 price_values = [] # 遍历列表中的每个字典 for dict_item in data: # 遍历当前字典的所有键值对 for key, value in dict_item.items(): # 判断键是否以'price'开头,是就把值加入列表 if key.startswith('price'): price_values.append(value) # 输出结果 print(price_values)
方法2:嵌套列表推导式(更简洁)
如果你喜欢更紧凑的代码,用嵌套列表推导式一行就能搞定:
price_values = [value for dict_item in data for key, value in dict_item.items() if key.startswith('price')]
为什么你的startswith()没生效?
大概率是这几个原因:
- 你可能误把值当成键来调用
startswith()了(比如写了value.startswith('price')),而你的值是数字或时间类型,根本没有这个方法; - 你可能只遍历了列表中的某一个字典,没循环处理所有字典;
- 你可能没正确遍历字典的键值对,比如只遍历了键但没获取对应的值。
运行上面的代码后,你就能得到所有以price开头的键对应的数值,包括示例里的35.56、0、10.16这些啦。
内容的提问来源于stack exchange,提问作者Kunal Malhotra
相关产品推荐
相关产品推荐

