Python 使用相似的键但不同的值在嵌套字典上迭代

Python 使用相似的键但不同的值在嵌套字典上迭代,python,json,search,dictionary,Python,Json,Search,Dictionary,这是我的Json文件的副本。如何循环json并列出/或打印特定的键(例如:“hteamName”),该键在不同的数组中类似,但具有不同的值。 从前面的一个问题中,我得到了一些可以在嵌套字典中迭代的代码,但它只能找到具有唯一值的唯一键 { "matchesPlayed":{"label":"Matches Played","value":7} , "matches":[ { "date":"21 Jun" ,"hteamcode"

这是我的Json文件的副本。如何循环json并列出/或打印特定的键(例如:“hteamName”),该键在不同的数组中类似,但具有不同的值。 从前面的一个问题中,我得到了一些可以在嵌套字典中迭代的代码,但它只能找到具有唯一值的唯一键

    {
       "matchesPlayed":{"label":"Matches Played","value":7}

      , "matches":[
    {
      "date":"21 Jun"
      ,"hteamcode":"ESP"
      ,"hteamName":"Spain"
      ,"ateamcode":"HON"
      ,"ateamName":"Honduras"

      ,"score":"2:0 (1:0)"

    }
  ,
    {
      "date":"25 Jun"
      ,"hteamcode":"CHI"
      ,"hteamName":"Chile"
      ,"ateamcode":"ESP"
      ,"ateamName":"Spain"

      ,"score":"1:2 (0:2)"

    }
  ,
    {
      "date":"07 Jul"
      ,"hteamcode":"GER"
      ,"hteamName":"Germany"
      ,"ateamcode":"ESP"
      ,"ateamName":"Spain"


    }
  ,
    {
      "date":"29 Jun"
      ,"hteamcode":"ESP"
      ,"hteamName":"Spain"
      ,"ateamcode":"POR"
      ,"ateamName":"Portugal"

      ,"score":"1:0 (0:0)"

    }
  ,
    {
      "date":"11 Jul"
      ,"hteamcode":"NED"
      ,"hteamName":"Netherlands"
      ,"ateamcode":"ESP"
      ,"ateamName":"Spain"

      ,"score":"0:1 a.e.t."


    }
  ,
    {
      "date":"03 Jul"
      ,"hteamcode":"PAR"
      ,"hteamName":"Paraguay"
      ,"ateamcode":"ESP"
      ,"ateamName":"Spain"

      ,"score":"0:1 (0:0)"

    }
  ,
    {
      "date":"16 Jun"
      ,"hteamcode":"ESP"
      ,"hteamName":"Spain"
      ,"ateamcode":"SUI"
      ,"ateamName":"Switzerland"

      ,"score":"0:1 (0:0)"

    }
  ]
    }
在函数中:

["hteamName :"+ x.get("hteamName") for x in d["matches"] ]
['hteamName :Spain', 'hteamName :Chile', 'hteamName :Germany', 'hteamName :Spain',    'hteamName :Netherlands', 'hteamName :Paraguay', 'hteamName :Spain']

这应该让你开始

试试这个简单的版本:

def search(d, k,nested):
    result=[]
    for n in d[nested]:
        result.append('{0} : {1}'.format(k,n.get(k)))
    return result

search(d,"hteamName","matches")
['hteamName : Spain', 'hteamName : Chile', 'hteamName : Germany', 'hteamName : Spain', 'hteamName : Netherlands', 'hteamName : Paraguay', 'hteamName : Spain']

这应该可以让您开始接下来的工作。

这个问题是关于什么编程语言的?您能提供一个您想要得到的示例输出吗?对于此输入和搜索函数的关键字。“hteamName”:“西班牙”、“hteamName”:“智利”、“hteamName”:“德国”、“hteamName”:“西班牙”、“hteamName”:“荷兰”、“hteamName”:“巴拉圭”、“hteamName”:“西班牙”此外,我从一个json文件加载json数组,并将json文件加载到一个python对象中-json_data=open('C:/json/Spania.json'))data=json.load(json_data)谢谢,但实际上我正试图提取键、值对来为图形绘制节点,而不仅仅是打印它们。因此,要么我必须创建一个列表,要么遍历整个json文件(使用循环)并自动选择键,值pairsI在Search@(d,'hteamName','matches')时出现语法错误,但第一个有效fine@TheSolider. 抱歉,错过了一个结束符,现在应该可以工作了谢谢,但实际上我正在尝试提取键、值对来绘制图的节点,而不仅仅是打印它们。因此,要么我必须列出一个列表,要么迭代整个json文件(使用循环),并自动选择键、值对谢谢,这让我开始了。
def search(d, k,nested):
    result=[]
    for n in d[nested]:
        result.append('{0} : {1}'.format(k,n.get(k)))
    return result

search(d,"hteamName","matches")
['hteamName : Spain', 'hteamName : Chile', 'hteamName : Germany', 'hteamName : Spain', 'hteamName : Netherlands', 'hteamName : Paraguay', 'hteamName : Spain']
with open(r'C:/Json/Spain.json') as f:
    data = json.load(f)

for match in data['matches']:
    print(match['hteamName'])