我想将元组列表放入这样的字典中: 我想做的是动态添加具有多个值的键。
元组列表:
[((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)]}
答案 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)]}
答案 1 :(得分:0)
.append
很好。
out_dict = {'less':[], 'more':[]}
for t in list_of_tuples:
out_dict[t[1]].append(t[0])
如果您不想提前定义键:
out_dict = {}
for t in list_of_tuples:
if t[1] not in out_dict:
out_dict[t[1]] = []
out_dict[t[1]].append(t[0])
答案 2 :(得分:0)
只需将每个元组放入dict中的正确列表中即可。
a = [((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')]
mydict = {'less': list(), 'more': list()}
for i in range(len(a)):
if a[i][1] == 'less':
mydict['less'].append(a[i][0])
else:
mydict['more'].append(a[i][0])
答案 3 :(得分:0)
作为更通用的解决方案,我建议使用defaultdict:
from collections import defaultdict
result = defaultdict(list)
# Assuming your list is in a variable called 'data'
for data_tuple in data:
result[data_tuple[1]].append(data_tuple[0])
当将密钥提供给不存在的defaultdict时,它将调用您提供的工厂函数(在本例中为list
)。
答案 4 :(得分:0)
Cookie