python - 如何使用新的键和值创建字典并将值添加到一个键
问题描述
我想将元组列表放入这样的字典中:我想要做的是动态添加具有多个值的键。
元组列表:
[((1.0, 54, 0.0), 'less'),
((0.0, 55, 0.0), 'less'),
((0.0, 26, 0.0), 'less'),
.
.
.
((1.0, 40, 0.0), 'more'),
((1.0, 25, 1.0), 'less'),]
输出应该是这样的:
标签应该是键,data_points 的元组应该是我想要创建字典的值,这样键就不会重复
{'less': [(1.0, 54, 0.0), (0.0, 55, 0.0), (0.0, 26, 0.0), (1.0, 25, 1.0), (0.0, 15, 0.0), (0.0, 35, 0.0), (0.0, 41, 0.0), (0.0, 20, 0.0), (1.0, 18, 1.0)], \
'more': [(1.0, 40, 0.0), (0.0, 13, 1.0), (0.0, 50, 1.0), (1.0, 33, 0.0), (1.0, 30, 1.0), (0.0, 39, 1.0), (1.0, 55, 0.0)]}
解决方案
使用setdefault:
data = [((1.0, 54, 0.0), 'less'),
((0.0, 55, 0.0), 'less'),
((0.0, 26, 0.0), 'less'),
((1.0, 40, 0.0), 'more'),
((1.0, 25, 1.0), 'less')]
result = {}
for value, key in data:
result.setdefault(key, []).append(value)
print(result)
或者作为替代方案,您可以检查字典中是否不存在该键并将相应的值设置为空列表:
data = [((1.0, 54, 0.0), 'less'),
((0.0, 55, 0.0), 'less'),
((0.0, 26, 0.0), 'less'),
((1.0, 40, 0.0), 'more'),
((1.0, 25, 1.0), 'less')]
result = {}
for value, key in data:
if key not in result:
result[key] = []
result[key].append(value)
print(result)
输出
{'less': [(1.0, 54, 0.0), (0.0, 55, 0.0), (0.0, 26, 0.0), (1.0, 25, 1.0)], 'more': [(1.0, 40, 0.0)]}
推荐阅读
- apache-nifi - 如何通过 InvokeHttp NiFi 发送多部分/表单数据
- javascript - 从嵌套数组javascript中删除双引号
- ionic-framework - 每当在离子中单击标签时,如何将标签推送到默认页面
- javascript - 当我点击任何地方或信息窗口打开时,我想从 agm-map 获取准确的坐标
- javascript - 通过城市名称获取当前时间
- sql-server - 通过 Azure 资源管理器 (ARM) 模板创建 SQL Server
- xml - 如何在xslt变量中存储2个空格
- javascript - 如何将浏览器窗口修复为特定大小并禁用调整大小?
- html - 在后台使用 IE 抓取 URL - 如何退出 IE 进程?
- python - SparseTensor 中的重复索引会发生什么?