在条件下创建字典列表

时间:2017-02-17 08:50:02

标签: python json dictionary

我有一个json格式数据。我想从中提取一些有用的数据,所以我需要使用一些循环来完成它。 这是我的代码:

data=json.loads(res.text)

for item in data['leagues'][0]['events']:

    for xx in item['periods']:

        if 'moneyline' in xx.keys():

            md=xx['moneyline']

            print(md)

我得到了这样的结果:

  

{'远离':303.0,'家庭':116.0,'画':223.0}

     

{'远离':1062.0,'回家':-369.0,'画':577.0}

     

{'远离':337.0,'家庭':109.0,'画':217.0}

     

{'远离':297.0,'家庭':110.0,'画':244.0}

     

{'远离':731.0,'家庭':-240.0,'画':415.0}

如何将这些单独的数据合并为词典形式?

我将代码修改为:

data=json.loads(res.text)

dlist=[]

for item in data['leagues'][0]['events']:
     for xx in item['periods']:  
        if 'moneyline' in xx.keys():
                d=xx['moneyline']
                dlist.append(d)
                print(dlist)

由于

1 个答案:

答案 0 :(得分:0)

我建议您使用列表来存储md中的xx['moneyline']词典,并将此词典的键存储在另一个词典中,您将存储md的所有值字典。对于每个键,列表将值存储在原始md字典中。结果将是这样的:

{'home': [116.0, -369.0, 109.0, 110.0, -240.0], 'away': [303.0, 1062.0, 337.0, 297.0, 731.0], 'draw': [223.0, 223.0, 223.0, 223.0, 223.0, 223.0, 223.0, 223.0, 223.0, 223.0, 223.0, 223.0, 223.0, 223.0, 223.0, 223.0, 577.0, 217.0, 244.0, 415.0]}

第1步:

data=json.loads(res.text)
list_dictionary = []  #Initialise an empty list to store the dictionaries
for item in data['leagues'][0]['events']:
    for xx in item['periods']:
        if 'moneyline' in xx.keys():
            md=xx['moneyline']
            list_dictionary.append(md).  #Append dictionary item to the list

步骤2:获取有关md字典中密钥的信息,并将这些密钥存储在空字典中。初始化空字典中所有键的空列表。

dictionary={}
for key in md.keys():
    dictionary.update({key:[]})

步骤3:迭代在步骤1中获得的list_dictionary,并对此列表中的每个md字典更新dictionary所有值。

for dict in list_dictionary:
    for key, value in dict():
        dictionary[key].append(value)

这是您可以在单个词典中获取所有信息的方法,其中键对应于值列表。

data=json.loads(res.text)
list_dictionary = []  #Initialise an empty list to store the dictionaries
dictionary={}    #Initialise an empty dictionary to store all the retrieved data as `md`
for item in data['leagues'][0]['events']:
    for xx in item['periods']:
        if 'moneyline' in xx.keys():
            md=xx['moneyline']
            list_dictionary.append(md).  #Append dictionary item to the list
            for key in md.keys():
                dictionary.update({key:[]}) 

#Store all the `md` values in dictionary as list 
for dict in list_dictionary:
    for key, value in dict.iteritems():
        dictionary[key].append(value)