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)
但是我不确定如何操作这些列表以创建所需的输出
使用简单的迭代。
例如:
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)