4

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

例如说字典={'Key1':(1.000,2.003,3.0029)}

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

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

如果有人知道如何做到这一点,我将不胜感激,因为它现在真的开始让我烦恼了。

谢谢!

编辑:谢谢大家!具有讽刺意味的是,我尝试了这一点,除非当时我试图将值设为多个列表而不是多个元组;当解决方案是将元组包含在列表中时。啊讽刺。

4

6 回答 6

13

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

from collections import defaultdict

x = defaultdict(list)
x['Key1'].append((1.000,2.003,3.0029))
于 2012-04-24T16:03:35.883 回答
6

只需将您的键映射到列表,并将元组附加到列表中。

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)]}
于 2012-04-24T16:01:41.803 回答
4

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

这样做的一种方法是获取与您的键关联的当前值,并将其附加到列表中,然后再将新列表设置回该键。但是,如果您有可能需要任何键,那么您应该在一开始就对所有键都这样做,否则您将遇到各种困难来确定您所处的级别。

于 2012-04-24T16:03:34.377 回答
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)]}
于 2012-04-24T16:02:41.957 回答
1

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

  1. 如果键不在字典中,则将元组关联到键
  2. 如果键在字典中并指向一个元组,则将元组替换为两个元组的列表
  3. 将元组附加到与键关联的元组列表中

这可以通过以下代码实现:

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)
于 2012-04-24T16:05:26.277 回答
0

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

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

dictionary = {}
listoftuples = []//create a tuples of list
dictionary[key].append(listoftuples)//appending it to a dictionary key 
于 2016-02-22T05:17:16.373 回答