Python 3.x 如何提取嵌套列表的第n个元素,其中每个内部列表包含x个元素并作为字典返回?
我有以下嵌套列表:Python 3.x 如何提取嵌套列表的第n个元素,其中每个内部列表包含x个元素并作为字典返回?,python-3.x,Python 3.x,我有以下嵌套列表: orders = [['Large', 'Latte', 2.45], ['', 'Frappes - Coffee', 2.75, '', 'Cortado', 2.05, '', 'Glass of milk', 0.7, '', 'Speciality Tea - Camomile', 1.3, '', 'Speciality Tea - Camomile', 1.3]] 每个内部列表有n个元素,但总是可以被3整除 我的问题是,我试图通过迭代orders返回字典列表
orders = [['Large', 'Latte', 2.45],
['',
'Frappes - Coffee',
2.75,
'',
'Cortado',
2.05,
'',
'Glass of milk',
0.7,
'',
'Speciality Tea - Camomile',
1.3,
'',
'Speciality Tea - Camomile',
1.3]]
每个内部列表有n个元素,但总是可以被3整除
我的问题是,我试图通过迭代orders
返回字典列表,其中包含以下内容:
[dict(size=i[0],product=i[1],price=i[2]) for i in orders]
[
[{'size': 'Large', 'product': 'Latte', 'price': 2.45}],
[{'size': '', 'product': 'Frappes - Coffee', 'price': 2.75},
{'size': '', 'product': 'Cortado', 'price': 2.05},
{'size': '', 'product': 'Glass of Milk', 'price': 0.7},
{'size': '', 'product': 'Speciality Tea - Camomile', 'price': 1.3},
{'size': '', 'product': 'Speciality Tea - Camomile', 'price': 1.3}]
]
但是,这只返回products[1]
returns [{'size': 'Large', 'product': 'Latte', 'price': 2.45},
{'size': '', 'product': 'Frappes - Coffee', 'price': 2.75}]
我试着做了第二个循环,但也不起作用
我希望我的代码输出以下内容:
[dict(size=i[0],product=i[1],price=i[2]) for i in orders]
[
[{'size': 'Large', 'product': 'Latte', 'price': 2.45}],
[{'size': '', 'product': 'Frappes - Coffee', 'price': 2.75},
{'size': '', 'product': 'Cortado', 'price': 2.05},
{'size': '', 'product': 'Glass of Milk', 'price': 0.7},
{'size': '', 'product': 'Speciality Tea - Camomile', 'price': 1.3},
{'size': '', 'product': 'Speciality Tea - Camomile', 'price': 1.3}]
]
如果有人能给我指出正确的方向,我将不胜感激 问题是订单不一致。通过改变它来修复它,使每个新订单都有一个列表是最好的解决方案
orders = [
["Large", "Latte", 2.45],
["", "Frappes - Coffee", 2.75],
["", "Cortado", 2.05],
["", "Glass of milk", 0.7],
["","Speciality Tea - Camomile",1.3],
["","Speciality Tea - Camomile",1.3]
]
问题是订单不一致。通过改变它来修复它,使每个新订单都有一个列表是最好的解决方案
orders = [
["Large", "Latte", 2.45],
["", "Frappes - Coffee", 2.75],
["", "Cortado", 2.05],
["", "Glass of milk", 0.7],
["","Speciality Tea - Camomile",1.3],
["","Speciality Tea - Camomile",1.3]
]
您可以将子列表迭代为大小为3的块,然后生成dict:
def chunks(lst, n):
"""Yield successive n-sized chunks from lst.
https://stackoverflow.com/questions/312443/how-do-you-split-a-
list-into-evenly-sized-chunks
"""
for i in range(0, len(lst), n):
yield lst[i:i + n]
[[dict(size=i[0],product=i[1],price=i[2])
for i in chunks(order, 3)]
for order in orders]
输出:
[[{'size': 'Large', 'product': 'Latte', 'price': 2.45}],
[{'size': '', 'product': 'Frappes - Coffee', 'price': 2.75},
{'size': '', 'product': 'Cortado', 'price': 2.05},
{'size': '', 'product': 'Glass of milk', 'price': 0.7},
{'size': '', 'product': 'Speciality Tea - Camomile', 'price': 1.3},
{'size': '', 'product': 'Speciality Tea - Camomile', 'price': 1.3}]]
您可以将子列表迭代为大小为3的块,然后生成dict:
def chunks(lst, n):
"""Yield successive n-sized chunks from lst.
https://stackoverflow.com/questions/312443/how-do-you-split-a-
list-into-evenly-sized-chunks
"""
for i in range(0, len(lst), n):
yield lst[i:i + n]
[[dict(size=i[0],product=i[1],price=i[2])
for i in chunks(order, 3)]
for order in orders]
输出:
[[{'size': 'Large', 'product': 'Latte', 'price': 2.45}],
[{'size': '', 'product': 'Frappes - Coffee', 'price': 2.75},
{'size': '', 'product': 'Cortado', 'price': 2.05},
{'size': '', 'product': 'Glass of milk', 'price': 0.7},
{'size': '', 'product': 'Speciality Tea - Camomile', 'price': 1.3},
{'size': '', 'product': 'Speciality Tea - Camomile', 'price': 1.3}]]