【发布时间】:2021-08-01 16:18:10
【问题描述】:
以下是我开始使用的数据。理想情况下,我想从该字典列表中的第一个字典中捕获“avg”、“low”、“high”和“numberOfAnalysts”键的“原始”值,以 bold 显示(或在双星号 (**) 之间捕获:
[**{'avg': {'raw': 3.02, 'fmt': '3.02'}, 'low': {'raw': 2.5, 'fmt': '2.5'}, 'high': {'raw': 3.15, 'fmt': '3.15'}, 'yearAgoEps': {'raw': 0.91, 'fmt': '0.91'}, 'numberOfAnalysts': {'raw': 20, 'fmt': '20', 'longFmt': '20'}, 'growth': {'raw': 2.319, 'fmt': '231.90%'}}**, {'avg': {'raw': 2.62, 'fmt': '2.62'}, 'low': {'raw': 2.36, 'fmt': '2.36'}, 'high': {'raw': 3.05, 'fmt': '3.05'}, 'yearAgoEps': {'raw': 2.92, 'fmt': '2.92'}, 'numberOfAnalysts': {'raw': 20, 'fmt': '20', 'longFmt': '20'}, 'growth': {'raw': -0.103, 'fmt': '-10.30%'}}, {'avg': {'raw': 10.14, 'fmt': '10.14'}, 'low': {'raw': 8.87, 'fmt': '8.87'}, 'high': {'raw': 10.68, 'fmt': '10.68'}, 'yearAgoEps': {'raw': 8.51, 'fmt': '8.51'}, 'numberOfAnalysts': {'raw': 26, 'fmt': '26', 'longFmt': '26'}, 'growth': {'raw': 0.192, 'fmt': '19.20%'}}, {'avg': {'raw': 11.67, 'fmt': '11.67'}, 'low': {'raw': 9.39, 'fmt': '9.39'}, 'high': {'raw': 13.08, 'fmt': '13.08'}, 'yearAgoEps': {'raw': 10.14, 'fmt': '10.14'}, 'numberOfAnalysts': {'raw': 26, 'fmt': '26', 'longFmt': '26'}, 'growth': {'raw': 0.15100001, 'fmt': '15.10%'}}, {'avg': {}, 'low': {}, 'high': {}, 'yearAgoEps': {}, 'numberOfAnalysts': {}, 'growth': {}}, {'avg': {}, 'low': {}, 'high': {}, 'yearAgoEps': {}, 'numberOfAnalysts': {}, 'growth': {}}]
我已使用以下代码切出“avg”键/值对,开始:
dispersion_analyst_data_final = dispersion_analyst_data_list_extract
dispersion_analyst_data_final_list_extract = [sub['avg'] for sub in dispersion_analyst_data_final]
print(str(dispersion_analyst_data_final_list_extract))
导致以下输出:
[{'raw': 3.02, 'fmt': '3.02'}, {'raw': 2.62, 'fmt': '2.62'}, {'raw': 10.14, 'fmt': '10.14'}, {'raw': 11.67, 'fmt': '11.67'}, {}, {}]
我几乎可以肯定,有一种更有效的方法可以深入到最终的“原始”值,而无需使用 sub() 进行多个离散步骤。 'avg'、'low'、'high' 和 'numberOfAnalysts' 数据的第一个字典的 'raw' 值最终将输出到 CSV 文件。是否可以将多个 sub() 操作连接到“提取”对象中?
最终所需的数据是dispersion_analyst_data_list_extract 中第一个字典条目中“avg”、“low”、“high”和“numberOfAnalysts”的“原始”值。任何建议将不胜感激。
【问题讨论】:
-
变量 dispersion_analyst_data_list_extract 是您的原始列表吗?
-
我不确定您想要什么,因为您的第一段暗示您只想从第一个字典中捕获数据,但您的示例输出和列表理解显示您正在从所有字典中获取数据。
-
正确。原始起点列表是dispersion_analyst_data_list_extract。变量dispersion_analyst_data_final_list_extract 更接近于提取上述“原始”值。我想看看这个工作流程是否可以更好地简化,基于原始的起始列表dispersion_analyst_data_list_extract。
-
对于
dispersion_analyst_data_list_extract中的第一个字典,您是否尝试获取与键关联的值:'avg', 'low', 'high', 'numberOfAnalysts'? -
DarrylG,正确,而且以更高效/更精简的方式
标签: python dictionary