Python 如何将列表转换为嵌套字典?
初学者程序员在这里。我有两个问题Python 如何将列表转换为嵌套字典?,python,list,dictionary,Python,List,Dictionary,初学者程序员在这里。我有两个问题 将列表转换为嵌套字典: 房价=[‘20万英镑’、‘30万英镑’、‘50万英镑’] 我想把它变成-- 将两个列表转换为嵌套字典: 房价=[‘20万英镑’、‘30万英镑’、‘50万英镑’] 卧室数量=[2,3,5] 我想变成-- d={} 对于X范围内的i(房屋价格): 格式(i+1)]={“价格”:房价[i]} 第二部分: d={} 对于X范围内的i(房屋价格): d[“house{}”.format(i+1)]={“price”:房价[i],“没有卧室”:
d={}
对于X范围内的i(房屋价格):
格式(i+1)]={“价格”:房价[i]}
第二部分:
d={}
对于X范围内的i(房屋价格):
d[“house{}”.format(i+1)]={“price”:房价[i],“没有卧室”:没有卧室[i]}
请注意,
房价
和无卧室
必须大小相同,否则将提高索引器
。zip函数获取多个列表,并从每个列表返回一个元素的元组:
>>> house_prices = ['200k', '300k', '500k']
>>> no_of_bedrooms = [2, 3, 5]
>>>
>>> list(zip(house_prices, no_of_bedrooms))
[('200k', 2), ('300k', 3), ('500k', 5)]
>>>
zip返回一个生成器,所以我将其转换为上面的列表以查看结果
有一个内置枚举函数,可返回列表中的索引和值:
>>> for i, n in enumerate(['a', 'b', 'c'], start=1):
... print(i, n)
...
1 a
2 b
3 c
>>>
将两者结合起来,可以得到:
>>> list(enumerate(zip(house_prices, no_of_bedrooms), start=1))
[(1, ('200k', 2)), (2, ('300k', 3)), (3, ('500k', 5))]
你可以把它输入到听写理解中:
>>> 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'}}
以更漂亮的格式打印的技巧是使用json模块:
>>> 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"
}
}
>>>
我们可以用词来理解任何东西
house_prices = ['£200k', '£300k', '£500k']
House_price_dict = {f'house{idx}':{'price':i} for idx, i in enumerate(house_prices, start=1)}
#{'house1': {'price': '£200k'},
# 'house2': {'price': '£300k'},
# 'house3': {'price': '£500k'}}
no_of_bedrooms = [2, 3, 5]
house_info_dict = {f'house{idx}':{'price':i[0], 'no_of_bedrooms': i[1]} for idx, i in enumerate(zip(house_prices, no_of_bedrooms), start=1)}
#{'house1': {'price': '£200k', 'no_of_bedrooms': 2},
# 'house2': {'price': '£300k', 'no_of_bedrooms': 3},
# 'house3': {'price': '£500k', 'no_of_bedrooms': 5}}
您已经尝试过什么?xrange的
xrange
是什么意思?您是否打算range
?range
如果您使用的是python 3,那么xrange
如果您使用的是python 2。请注意,range
也存在于Python2中,但与Python3中的不同。
>>> 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"
}
}
>>>
house_prices = ['£200k', '£300k', '£500k']
House_price_dict = {f'house{idx}':{'price':i} for idx, i in enumerate(house_prices, start=1)}
#{'house1': {'price': '£200k'},
# 'house2': {'price': '£300k'},
# 'house3': {'price': '£500k'}}
no_of_bedrooms = [2, 3, 5]
house_info_dict = {f'house{idx}':{'price':i[0], 'no_of_bedrooms': i[1]} for idx, i in enumerate(zip(house_prices, no_of_bedrooms), start=1)}
#{'house1': {'price': '£200k', 'no_of_bedrooms': 2},
# 'house2': {'price': '£300k', 'no_of_bedrooms': 3},
# 'house3': {'price': '£500k', 'no_of_bedrooms': 5}}