首页 > 解决方案 > 如何使用新的键和值创建字典并将值添加到一个键

问题描述

我想将元组列表放入这样的字典中:我想要做的是动态添加具有多个值的键。

元组列表:

[((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)]}

标签: pythondictionary

解决方案


使用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)]}

推荐阅读