过滤 2 个词典 json Python

Filtering 2 dictionaries json Python

我正在尝试编写一个代码,它只打印 sub-dictionariesfile1s value 变量输出,所以 {'StrategyNumber': 2, 'TradingPair': 'BCHUSDT', 'value': 3000}s value 输出将是 3000 。如果 file2OpenningdateClosingdate 不为空,那么 file1file2 是匹配的,那么我想得到 sub 的 value 输出-字典。我怎样才能得到 Expected Output?

词典:

file1={'RSI': [{'StrategyNumber': 1, 'TradingPair': 'BTCUSD', 'value': 100}], 'MOM': [{'StrategyNumber': 2, 'TradingPair': 'BCHUSDT', 'value': 3000}, {'StrategyNumber': 3, 'TradingPair': 'ETHUSDT', 'value': 22}], 'MOM_RSI': [{'StrategyNumber': 4, 'TradingPair': 'BCHUSDT', 'value': 4556}, {'StrategyNumber': 5, 'TradingPair': 'BTCUSDT', 'value': 234}]}
file2={'RSI': [{'StrategyNumber': 1, 'Openningdate': [], 'Closingdate': []}], 'MOM': [{'StrategyNumber': 2, 'Openningdate': [324284], 'Closingdate': [23234]}, {'StrategyNumber': 3, 'Openningdate': [324235456, 78475], 'Closingdate': [232343435, 45678756]}], 'MOM_RSI': [{'StrategyNumber': 4, 'Openningdate': [], 'Closingdate': []}, {'StrategyNumber': 5, 'Openningdate': [777, 88, 9, 10], 'Closingdate': [10, 476, 3456, 45]}]

过滤器代码:

for Strats in file2:
    for Strats_info in file2[Strats]:
        for momentum_filter in file1[Strats]:
            if len(Strats_info["Openningdate"]) > 0 and len(Strats_info["Closingdate"]) > 0:
                print(momentum_filter['value'])

输出:

3000
22
3000
22
4556
234

预期输出:

3000
24
234

使用zip将相同的Strats_info与相同的momentum_filter配对:

file1 = {'RSI': [{'StrategyNumber': 1, 'TradingPair': 'BTCUSD', 'value': 100}],
         'MOM': [{'StrategyNumber': 2, 'TradingPair': 'BCHUSDT', 'value': 3000},
                 {'StrategyNumber': 3, 'TradingPair': 'ETHUSDT', 'value': 22}],
         'MOM_RSI': [{'StrategyNumber': 4, 'TradingPair': 'BCHUSDT', 'value': 4556},
                     {'StrategyNumber': 5, 'TradingPair': 'BTCUSDT', 'value': 234}]}

file2 = {'RSI': [{'StrategyNumber': 1, 'Openningdate': [], 'Closingdate': []}],
         'MOM': [{'StrategyNumber': 2, 'Openningdate': [324284], 'Closingdate': [23234]},
                 {'StrategyNumber': 3, 'Openningdate': [324235456, 78475], 'Closingdate': [232343435, 45678756]}],
         'MOM_RSI': [{'StrategyNumber': 4, 'Openningdate': [], 'Closingdate': []},
                     {'StrategyNumber': 5, 'Openningdate': [777, 88, 9, 10], 'Closingdate': [10, 476, 3456, 45]}]}

for Strats in file2:
    for Strats_info,momentum_filter in zip(file2[Strats],file1[Strats]):
            if len(Strats_info["Openningdate"]) > 0 and len(Strats_info["Closingdate"]) > 0:
                print(momentum_filter['value'])

输出:

3000
22
234