我有一個復雜的嵌套字典。我想提取所有“符號”鍵。我已經嘗試過提取所有值的函式,.get,轉換為串列,元組,我知道我可以將它逐個分解,但我想知道什么是最有效、最不容易出錯的方法來決議它呼叫頂級鍵。頂級鍵發生變化,因此創建功能來解決這些問題并不理想,并且打開了破壞代碼的可能性,因此輸入symbol = map['2022-05-10:1']['303.0']['symbol']
不是我想要做的。
{'2022-05-16:1': {'300.0': [{'putCall': 'CALL',
'symbol': 'QQQ_051622C300',
'description': 'QQQ May 16 2022 300 Call',
'exchangeName': 'OPR',
'bid': 3.77,
'ask': 3.94,
'last': 3.86,
'mark': 3.86,
'bidSize': 78,
'askSize': 34,
'bidAskSize': '78X34',
'lastSize': 0,
'highPrice': 5.38,
'lowPrice': 2.17,
'openPrice': 0.0,
'closePrice': 4.19,
'totalVolume': 23707,
'tradeDate': None,
'tradeTimeInLong': 1652472847483,
'quoteTimeInLong': 1652472899026,
'netChange': -0.33,
'volatility': 26.028,
'delta': 0.602,
'gamma': 0.049,
'theta': -0.411,
'vega': 0.117,
'rho': 0.017,
'openInterest': 5828,
'timeValue': 1.92,
'theoreticalOptionValue': 4.19,
'theoreticalVolatility': 29.0,
'optionDeliverablesList': None,
'strikePrice': 300.0,
'nonStandard': False}],
'301.0': [{'putCall': 'CALL',
'symbol': 'QQQ_051622C301',
'description': 'QQQ May 16 2022 301 Call',
'exchangeName': 'OPR',
'bid': 3.23,
'ask': 3.35,
'last': 3.27,
'mark': 3.29,
...
uj5u.com熱心網友回復:
獲取嵌套字典中的所有symbol
值,您可以使用下一個示例(dct
是問題中的字典):
print([i["symbol"] for d in dct.values() for v in d.values() for i in v])
印刷:
['QQQ_051622C300', 'QQQ_051622C301', 'QQQ_051622C302', 'QQQ_051622C303']
編輯:如果缺少符號:
print(
[
s
for d in dct.values()
for v in d.values()
for i in v
if (s := i.get("symbol"))
]
)
uj5u.com熱心網友回復:
如果這個結構是一致的,你可以使用:
# x is your dictionary
symbols = []
for date in x.values():
for i in date.values():
for j in i:
if "symbol" in j:
symbols.append(j["symbol"])
>>> symbols
['QQQ_051622C300',
'QQQ_051622C301',
'QQQ_051622C302',
'QQQ_051622C303']
或者,如果您只想列印符號鍵而不是保存它,則只需洗掉symbols = []
并替換為。symbols.append(j["symbol"])
print(j["symbol"])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/475770.html