如何使用新的键和值创建字典,以及如何向一个键添加值

时间:2018-12-06 14:42:42

标签: python dictionary

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

元组列表:

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

5 个答案:

答案 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)

使用defaultdict

Cookie