<p>zip函数获取多个列表,并返回每个列表中包含一个元素的元组:</p>
<pre><code>>>> house_prices = ['200k', '300k', '500k']
>>> no_of_bedrooms = [2, 3, 5]
>>>
>>> list(zip(house_prices, no_of_bedrooms))
[('200k', 2), ('300k', 3), ('500k', 5)]
>>>
</code></pre>
<p>zip返回一个生成器,所以我将其转换为上面的列表以查看结果</p>
<p>有一个内置枚举函数,可返回列表中的索引和值:</p>
<pre><code>>>> for i, n in enumerate(['a', 'b', 'c'], start=1):
... print(i, n)
...
1 a
2 b
3 c
>>>
</code></pre>
<p>将两者结合起来,可以得到:</p>
<pre><code>>>> list(enumerate(zip(house_prices, no_of_bedrooms), start=1))
[(1, ('200k', 2)), (2, ('300k', 3)), (3, ('500k', 5))]
</code></pre>
<p>你可以把它输入到听写理解中:</p>
<pre><code>>>> house_info_dict = {'house%d' % i: {
... 'price': p,
... 'no_of_bedrooms': n
... } for i, (p, n) in enumerate(zip(house_prices, no_of_bedrooms), start=1)}
>>> house_info_dict
{'house3': {'no_of_bedrooms': 5, 'price': '500k'}, 'house2': {'no_of_bedrooms': 3, 'price': '300k'}, 'house1': {'no_of_bedrooms': 2, 'price': '200k'}}
</code></pre>
<p>以更漂亮的格式打印的技巧是使用json模块:</p>
<pre><code>>>> import json
>>> print(json.dumps(house_info_dict, indent=4))
{
"house3": {
"no_of_bedrooms": 5,
"price": "500k"
},
"house2": {
"no_of_bedrooms": 3,
"price": "300k"
},
"house1": {
"no_of_bedrooms": 2,
"price": "200k"
}
}
>>>
</code></pre>