【问题标题】:How do you add multiple tuples(lists, whatever) to a single dictionary key without merging them?如何在不合并它们的情况下将多个元组(列表等)添加到单个字典键中?
【发布时间】:2012-05-05 07:21:52
【问题描述】:

我一直在试图弄清楚如何将包含多个值的多个元组添加到字典中的单个键中。但到目前为止还没有成功。我可以将值添加到元组或列表中,但我不知道如何添加元组,以便键现在有 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))}(忘记了一组括号!)

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

谢谢!

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

【问题讨论】:

  • {'Key1':(1.000,2.003,3.0029),(2.3232,13.5232,1325.123)} 无效...

标签: python list dictionary tuples


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    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)
    

    【讨论】:

    • 这种方法会增加这个insert...()方法以及评估代码的不确定性。
    • @glglgl 我同意,这很丑。但这似乎是 OP 想要的。
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        代替:

        {'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)]}
        

        【讨论】:

          【解决方案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)]}
          

          【讨论】:

            猜你喜欢
            • 2014-12-08
            • 1970-01-01
            • 2020-08-05
            • 1970-01-01
            • 2019-03-12
            • 2011-03-30
            • 1970-01-01
            相关资源
            最近更新 更多