【问题标题】:Check if json dict have key with exact value检查json dict是否具有具有精确值的键
【发布时间】:2022-01-15 21:11:17
【问题描述】:
data = {
  "matches":[
    {"match1": {
      {"Oddid":1, "Odd":1.7},
      {"Oddid":2, "Odd":2.4},
      {"Oddid":3,"Odd":5.1}
    }
  },
    {"match2": {
      {"Oddid":1, "Odd":2.3},
      {"Oddid":2, "Odd":1.9},
      {"Oddid":3,"Odd":1.2}
    }
  },
    {"match3": {
      {"Oddid":1, "Odd":2.7},
      {"Oddid":2, "Odd":4.6},
      {"Oddid":4,"Odd":9.9}
    }
  }
  ]
}

如何检查每场比赛是否有“OddId”:4。 如果有,我想打印“奇数”值,如果没有,我想打印“1.00” 谢谢!

【问题讨论】:

    标签: python json dictionary


    【解决方案1】:

    您的data 格式不正确,因为某些括号定义了一个包含字典的集合,但由于字典不可散列,因此会出错。但是在修复了一些括号之后,什么时候可以遍历data来打印想要的输出:

    data = {
      "matches":{
        "match1": [
          {"Oddid":1, "Odd":1.7},
          {"Oddid":2, "Odd":2.4},
          {"Oddid":3, "Odd":5.1}
        ]
      ,
        "match2": [
          {"Oddid":1, "Odd":2.3},
          {"Oddid":2, "Odd":1.9},
          {"Oddid":3,"Odd":1.2}
        ]
      ,
        "match3": [
          {"Oddid":1, "Odd":2.7},
          {"Oddid":2, "Odd":4.6},
          {"Oddid":4,"Odd":9.9}
       ]
      }
    }
    
    for dct in data.values():
        for k, lst in dct.items():
            odd = [d['Odd'] for d in lst if d['Oddid']==4]
            if len(odd) > 0:
                print('{}: {}'.format(k,odd[0]))
            else:
                print('{}: 1.00'.format(k))
    

    输出:

    match1: 1.00
    match2: 1.00
    match3: 9.9
    

    【讨论】:

    • 这工作得很好!感谢您的回答!
    【解决方案2】:

    您可以使用两个for 循环并在data['matches'] 中迭代并检查条件。

    if key['Oddid'] == 4:
        print("Odd")
    else:
        print("1.00")
    

    在一个你不知道键名的字典中迭代你可以这样使用:

    dictname = {"match2": {}, "match1": {}}
    for key, value in dictname.items():
    

    注意:我认为你的 json 有一个问题,你有一个没有键和值的字典,因此我无法编写代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-20
      • 1970-01-01
      • 2016-07-16
      • 1970-01-01
      • 2019-08-13
      • 1970-01-01
      相关资源
      最近更新 更多