python - 嵌套列表操作
问题描述
我有一个嵌套列表,其中包含产品名称、产品 ID 和产品数据(另一个列表)。我想创建一个具有唯一名称和产品 ID 的字典列表,并加入与 name 和 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])
我想将我的数据转换为:
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]}]
我知道我可以使用以下方法遍历嵌套列表:
for inner_l in x:
for item in x:
print(item)
但我不确定如何操作这些列表来创建我想要的输出
解决方案
使用简单的迭代。
前任:
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()))
输出:
[{'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]}]
推荐阅读
- sql - 通过事件获得最大连续连续性 - 更新的问题
- javascript - Javascript试图洗牌我的纸牌数组,但不明白如何传递数组
- go - 渲染后返回语句的 Golang lint
- mysql - 不允许 MySQL 加载数据本地 Infile
- java - Maven 和 AnypointStudio
- java - 登录时出现 NoSuchMethodError 但在其他电脑上工作正常
- java - 在循环中交换数组的值
- html - 通过ajax发送变量和图像
- ruby-on-rails - Rails 设计删除/取消用户不工作
- javascript - 如何在我的 React 表中使用列和行的拖放功能 - ReactJS