无法理解代码行为 - python

时间:2017-03-26 17:35:46

标签: python python-2.7 python-3.x

我刚刚开始使用python,现在我正在尝试理解字典理解,但我没有得到以下代码的行为:

    data = [
             {'id': 12, 'data': '01'},
             {'id': 10, 'data': '05'},
             {'id': 11, 'data': '07'},
           ]
             { d['id']:d for d in data }.values()

输出:

dict_values([{'id': 12, 'data': '01'}, {'id': 10, 'data': '05'}, {'id': 11, 'data': '07'}])

请解释上述代码的输出。为什么要打印每个数据字典的第二个键值对,即'数据' 01'等等。

2 个答案:

答案 0 :(得分:2)

data是一个包含3个字典的数组,每个字典有2个键:“id”和“data”。

你问python是什么:

{ d['id']:d for d in data }

“为我构建一个字典,其中包含我的数据数组的每个元素的1对键/值。每个键应该是此元素的”id“值,每个值应该是d本身的元素< /强>“

您可能想要做的是:

In [6]: c={ d['id']:d["data"] for d in data}

In [7]: c
Out[7]: {10: '05', 11: '07', 12: '01'

“为我构建一个字典,其中包含我的数据数组的每个元素的1对键/值。每个键应该是此元素的”id“值,而每个值应该是”data“值这个元素

答案 1 :(得分:2)

您已创建dict列表

data = [              {'id':12,'data':'01'},              {'id':10,'data':'05'},              {'id':11,'数据':'07'},            ]

如果我们分开第一个陈述,那么我们将获得以下结果。

{d ['id']:d代表数据}

{10:{'data':'05','id':10},11:{'data':'07','id':11},12:{'data': '01','id':12}}

d 你是第一个 dict &amp;你正在用 d [id]

创建新的词典

d ['id']:d - &gt; 10:{'data':'05','id':10}

values():此方法返回给定字典中所有可用值的列表。

在你的例子中,3 dict是值。

这就是你得到结果的原因。

[{'data':'05','id':10},{'data':'07','id':11},{'data':'01','id ':12}]