如何在不合并它们的情况下将多个元组(列表,等等)添加到单个字典键中?

时间:2012-04-24 15:58:52

标签: python list dictionary tuples

我一直在试图弄清楚如何将包含多个值的多个元组添加到字典中的单个键。但到目前为止没有成功。我可以将值添加到元组或列表中,但我无法弄清楚如何添加元组以使键现在有2个包含值的元组,而不是包含所有元组的元组。

比如说词典= {'Key1':(1.000,2.003,3.0029)}

我想添加(2.3232,13.5232,1325.123)以便我最终得到:

dictionary = {'Key1':((1.000,2.003,3.0029),(2.3232,13.5232,1325.123))}(忘了一组括号!)

如果有人知道如何做到这一点,我会很感激帮助,因为它现在开始让我烦恼。

谢谢!

编辑:谢谢大家!讽刺我试过,除了当时我试图使值多个列表而不是多个元组;当解决方案只是将元组括在列表中时。讽刺啊。

6 个答案:

答案 0 :(得分:9)

使用defaultdict并始终使用追加,这将是无缝的。

from collections import defaultdict

x = defaultdict(list)
x['Key1'].append((1.000,2.003,3.0029))

答案 1 :(得分:5)

只需将您的密钥映射到列表,然后将元组附加到列表中。

d = {'Key1': [(1.000,2.003,3.0029)]}

然后...... ..

d['Key1'].append((2.3232,13.5232,1325.123))

现在你有:

{'Key1': [(1.0, 2.003, 3.0029), (2.3232, 13.5232, 1325.123)]}

答案 2 :(得分:3)

字典值不能仅包含两个元组。每个字典键映射到一个单独的值,因此唯一可以让两个单独的元组与该键相关联的元组是它们自己包含在元组或列表中:{'Key1':[(1.000,2.003,3.0029),(2.3232,13.5232,1325.123)]} - 注意额外的一对方括号。

执行此操作的一种方法是获取与密钥关联的当前值,并在将新列表设置回该密钥之前将其附加到列表中。但是如果有可能你需要任何键,那么你应该在开始时对所有键都这样做,否则你会遇到各种各样的困难,找出你所处的水平。

答案 3 :(得分:1)

而不是:

{'Key1':(1.000,2.003,3.0029)}

你想要的是:

{'Key1':[(1.000,2.003,3.0029)]}

当你添加另一个元组时,你会得到:

{'Key1':[(1.000,2.003,3.0029), (2.3232,13.5232,1325.123)]}

答案 4 :(得分:1)

我认为你的问题制定得有些糟糕。你想要:

  1. 如果密钥不在字典中,则将元组与密钥相关联
  2. 如果密钥在字典中并指向元组,则将元组替换为两个元组的列表
  3. 将元组附加到与键相关联的元组列表
  4. 这可以通过以下代码实现:

    def insertTuple(d, k, tup):
        if k not in d:
            d[k] = tup
        elif type(d[k]) == tuple:
            d[k] = [ d[k], tup ]
        else:
            d[k].append(tup)
    

答案 5 :(得分:0)

我们知道元组不可变。而不是使用元组元组。使用这将起作用的元组列表。

首先创建一个元组列表,然后将其附加到一个dictionay键。\

dictionary = {}
listoftuples = []//create a tuples of list
dictionary[key].append(listoftuples)//appending it to a dictionary key