gpt4 book ai didi

python - 使用多个值标准获取嵌套字典的键

转载 作者:太空宇宙 更新时间:2023-11-03 21:24:13 25 4
gpt4 key购买 nike

我有以下嵌套字典:

go._Order_Data_DB.items()

Out[62]: dict_items([(84852344, {'_action': 'OPEN', '_type': 0, '_symbol': 'EURUSD', '_price': 0.0, '_SL': 50, '_TP': 50, '_comment': 'DWX_Python_to_MT', '_lots': 0.01, '_magic': 123456, '_ticket': 0}), (84852345, {'_action': 'CLOSE', '_type': 0, '_symbol': 'EURUSD', '_price': 0.0, '_SL': 50, '_TP': 50, '_comment': 'DWX_Python_to_MT', '_lots': 0.01, '_magic': 123456, '_ticket': 84852345}),
(84852374, {'_action': 'OPEN', '_type': 0, '_symbol': 'GBPUSD', '_price': 0.0, '_SL': 50, '_TP': 50, '_comment': 'DWX_Python_to_MT', '_lots': 0.01, '_magic': 123456, '_ticket': 84852345})])

如果满足两个条件,我想检索订单号(键):'_action' == 'OPEN''_symbol' == ccy。我尝试使用下面的函数,但它只查看第一个条件,如果有人知道如何使两个条件都起作用,那就太好了,因为它似乎忽略了“和”。

def get_order_num(ccy): 
for k, v in go._Order_Data_DB.items():
for k1, v1 in v.items():
if v1 == ccy and v1 == 'OPEN':
return(k)

最佳答案

有两个主要问题:

  1. 您不需要嵌套循环来检查子词典中的特定键。您的 if 语句可以从外部字典的值中查询键。
  2. 如果多个子词典满足您的条件,return 只会捕获第一个子词典。要提取满足条件的所有项,请改为yield结果,然后通过list耗尽生成器。

这是一个演示;

d = dict([(84852344, {'_action': 'OPEN', '_type': 0, '_symbol': 'EURUSD', '_price': 0.0, '_SL': 50, '_TP': 50, '_comment': 'DWX_Python_to_MT', '_lots': 0.01, '_magic': 123456, '_ticket': 0}),
(84852345, {'_action': 'CLOSE', '_type': 0, '_symbol': 'EURUSD', '_price': 0.0, '_SL': 50, '_TP': 50, '_comment': 'DWX_Python_to_MT', '_lots': 0.01, '_magic': 123456, '_ticket': 84852345}),
(84852374, {'_action': 'OPEN', '_type': 0, '_symbol': 'GBPUSD', '_price': 0.0, '_SL': 50, '_TP': 50, '_comment': 'DWX_Python_to_MT', '_lots': 0.01, '_magic': 123456, '_ticket': 84852345})])

def get_order_num(ccy):
for k, v in d.items():
if v['_symbol'] == ccy and v['_action'] == 'OPEN':
yield k

res1 = list(get_order_num('EURUSD')) # [84852344]
res2 = list(get_order_num('GBPUSD')) # [84852374]

关于python - 使用多个值标准获取嵌套字典的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53969594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com