2017-09-14 160 views
-1

我刚开始学习Django和Python ...已经2个月了。 我正在做我自己的个人项目之一,我有一个部分在哪里查询web服务并将结果传递回模板。循环里面的字典python

webservice正在返回一个字典,如下所示。

x = {'ID':[{ 
    'key-1': 'First Name', 
    'key-2': 'John' 
},{ 
    'key-1': 'Last Name', 
    'key-2': 'Doe' 
},{ 
    'key-1': 'Age', 
    'key-2': '25' 
}] 

我期待遍历字典里面的列表,并创建自己的字典,如下面:

d = {'First Name': 'John', 'Last Name': 'Doe', 'Age': '25' }

我不知道我失去了什么,有人可以帮助我学习如何建立我的字典?

+1

你可以证明你到目前为止已经尝试了什么,并谈论你遇到的具体问题吗? – pvg

+0

我试图做某人在这里解释... https://stackoverflow.com/questions/18289678/python-iterating-through-a-dictionary-with-list-values 但它是不一样的我正在查看... – ppv

+0

如果您的外部字典被命名为'x',只需在x ['ID']中为el执行'{el ['key-1']:el ['key-2']}' –

回答

0

买者请注意字典的values方法的排序规则。订购规则2.x documentation3.x documentation

EDIT2:

为了防止字典排序和提供解决方案的任何怪事,包装你的数据到OrderedDict

from collections import OrderedDict 

x = {'ID':[OrderedDict({ 
     'key-1': 'First Name', 
     'key-2': 'John' 
     }),OrderedDict({ 
     'key-1': 'Last Name', 
     'key-2': 'Doe' 
     }),OrderedDict({ 
     'key-1': 'Age', 
     'key-2': '25' 
     })]} 

dict()是这样的一个不错的选择:

d = dict(each.values() for each in x['ID']) 

输出:

{'Age': '25', 'First Name': 'John', 'Last Name': 'Doe'} 
1

尝试一个词典理解和建立一个新的字典与key-1 as the key and key-2`作为价值。

x = {'ID':[{ 
    'key-1': 'First Name', 
    'key-2': 'John' 
},{ 
    'key-1': 'Last Name', 
    'key-2': 'Doe' 
},{ 
    'key-1': 'Age', 
    'key-2': '25' 
}]} 


print({el['key-1']: el['key-2'] for el in x['ID']}) 

结果

{ '年龄': '25', '名': '约翰', '姓': '李四'}