嵌套列表操作

Wil*_*win 3 python numpy list python-3.x pandas

我有一个嵌套列表,其中包含产品名称,产品ID和产品数据(另一个列表)。我想创建一个具有唯一名称和产品ID的词典列表,并加入与名称和ID变量相关的数据列表。

我的数据如下:

print(x)
[(14, 'netflix', [1, 2, 3, 4, 5, 6]), (14, 'netflix', [7, 8, 9, 10]),(15,'tv',
[1, 2, 3, 4, 5]), (15, 'tv', [7, 8, 9]), (16, 'radio', [1, 2, 3, 4]), 
(16, 'radio', [1, 2, 3, 4]) 
Run Code Online (Sandbox Code Playgroud)

我想将数据转换为:

x = [{'product_id':x[0], 'product': row[1], 'values':row[2]} for row in x]

#or for this example

x = [{'product_id':14, 'product':'netflix', 'values':[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, 
     {'product_id':15, 'product': 'tv',     'values':[1, 2, 3, 4, 5, 6, 7, 8, 9]}, 
     {'product_id':16, 'product': 'radio',  'values':[1, 2, 3, 4, 1, 2, 3, 4]}]
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用以下方法遍历嵌套列表:

for inner_l in x:
    for item in x:
        print(item)
Run Code Online (Sandbox Code Playgroud)

但是我不确定如何操作这些列表以创建所需的输出

Rak*_*esh 7

使用简单的迭代。

例如:

data = [(14, 'netflix', [1, 2, 3, 4, 5, 6]), (14, 'netflix', [7, 8, 9, 10]),(15,'tv',[1, 2, 3, 4, 5]), (15, 'tv', [7, 8, 9]), (16, 'radio', [1, 2, 3, 4]),(16, 'radio', [1, 2, 3, 4]) ]
keys = ['product_id', 'product', 'values']
result = {}   
for product_id, product, values in data:
    if product_id not in result:
        result[product_id] = dict(zip(keys, (product_id, product, values)))
    else:
        result[product_id]["values"].extend(values)
print(list(result.values()))
Run Code Online (Sandbox Code Playgroud)

输出:

[{'product': 'netflix',
  'product_id': 14,
  'values': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]},
 {'product': 'tv', 'product_id': 15, 'values': [1, 2, 3, 4, 5, 7, 8, 9]},
 {'product': 'radio', 'product_id': 16, 'values': [1, 2, 3, 4, 1, 2, 3, 4]}]  
Run Code Online (Sandbox Code Playgroud)