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}]]