python - 如何在python中将对象列表转换为稀疏矩阵?
问题描述
我有对象列表,我想将其转换为 python 中的稀疏矩阵。
我希望矩阵列是标签,行是标题(不同标题之间可能有重复的标签)
我不知道我该怎么办?
data = [
{
'title': 'title1', 'tags': ['tag1', 'tag2', 'tag3']
},
{
'title': 'title2', 'tags': ['tag1']
}
]
解决方案
对于0
/1
矩阵,您可以使用下一个示例:
data = [
{"title": "title1", "tags": ["tag1", "tag2", "tag3"]},
{"title": "title2", "tags": ["tag1"]},
]
# using sorted for having tag1 first, tag3 last:
tags = sorted({t for d in data for t in d["tags"]})
matrix = [[int(tt in d["tags"]) for tt in tags] for d in data]
print(matrix)
印刷:
[[1, 1, 1],
[1, 0, 0]]
对于“漂亮”打印矩阵:
data = [
{"title": "title1", "tags": ["tag1", "tag2", "tag3"]},
{"title": "title2", "tags": ["tag1"]},
]
tags = sorted({t for d in data for t in d["tags"]})
print(("{:<10}" * (len(tags) + 1)).format("", *tags))
for d in data:
print(
("{:<10}" * (len(tags) + 1)).format(
d["title"], *[int(tt in d["tags"]) for tt in tags]
)
)
印刷:
tag1 tag2 tag3
title1 1 1 1
title2 1 0 0
推荐阅读
- url - URL 仅使用 TOR 浏览器解析,否则错误 ERR_NAME_NOT_RESOLVED
- javascript - 如何在测试运行时访问 Nightwatch 中的窗口对象?
- angular - 如何使用 Mocha 和 Karma 配置 Angular 6 项目?
- excel - vba application.workbooks.open() 错误 1004 应用程序定义或对象定义错误
- python - 如何在 slack oAuth 重定向 url 中使用动态重定向 url?
- google-cloud-platform - 默认附加 500 GB 永久磁盘
- javascript - 使用 State Hook 正确设置状态
- php - 主页上有 2 个帖子的问题
- javascript - 如何在断点处重定向到另一个页面?
- mongodb - Mongoexport 给出身份验证失败错误