【问题标题】:Filtering 2 dictionaries json Python过滤2个字典json Python
【发布时间】:2021-10-24 08:03:49
【问题描述】:

我正在尝试编写仅打印 sub-dictionariesfile1s value 变量输出的代码,因此 {'StrategyNumber': 2, 'TradingPair': 'BCHUSDT', 'value': 3000}s value 输出将是 3000 。如果file2OpenningdateClosingdate 不为空,则file1file2 匹配,那么我想获得子词典的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

【问题讨论】:

    标签: python json dictionary filter format


    【解决方案1】:

    使用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
    

    【讨论】:

    • 谢谢你的工作我也在尝试将整个momentum_filter与每次迭代附加到一个单独的字典new_dict= {}中。我怎么能做到这一点?
    • @georgehere 用您的尝试和所需的输出提出另一个问题。我不太确定你想要什么,因为动量过滤器是字典列表,而不仅仅是字典。
    猜你喜欢
    • 2021-08-24
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 2022-12-22
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    相关资源
    最近更新 更多