【问题标题】:Extending a dictionary by adding to tupled value通过添加到元组值来扩展字典
【发布时间】:2016-08-07 23:15:27
【问题描述】:

(我只是用东西来表示我的字典的格式,这不是它的实际外观) 我拥有的当前字典格式为:

dict={"a":(1,2,3),"b":(2,3,4),"c":(3,4,5)}
dict2={1:(1,1,2),2:(2,2,3),3:(3,3,4)}

我正在尝试添加它。我有一个计算平均值的函数,现在我想创建第二个函数,该函数将从第一个函数中提取平均值并将其添加到字典值中的元组中。因此,如果“a”的平均值为 4,那么我想添加它以使其看起来像 {"a":(1,2,3,4)} 等。

def func1(dict, dict2, number):
   if number in dict:
      for num in dict.values():

       #return sum after iteration of sum through num[0] to num[2]

def func 2 (dict1, dict2)

    if number in dict:
       new_val_to_add= func1(dict, dict2, number)

从这里我不确定将返回的值添加到元组中的哪个位置,并能够打印回带有附加值的 dict。我正在考虑可能将第一个字典中的元组转换为一个列表,然后在我遍历字典中的每个键时附加到该列表,最后将其转换回一个元组。这是解决这个问题的正确方法吗?

【问题讨论】:

  • 元组是immutable。对于您正在尝试做的事情,您需要创建一个新元组,其中包含您要添加的旧数据和新数据的数据。
  • 是的,我知道元组是不可变的,所以这就是为什么我想通过这样做将它转换为列表让我们说:list(dict.values()) 并以这种方式添加它然后在返回字典之前将其最后更改回元组
  • 你不能让你的数据结构更容易改变,因为你在不断地改变值吗?

标签: python function loops dictionary tuples


【解决方案1】:

如果您希望值是可变的,为什么不使用列表而不是元组?

不过,您可以使用 + 组合两个元组:

>>> (1, 2, 3) + (4,)
(1, 2, 3, 4)

我在遵循您的示例代码时遇到了问题,但是使用遵循您的描述的字典,您可以这样做:

>>> d1 = {'a': (1, 2, 3)}
>>> d1['a'] += (4,)
>>> d1
{'a': (1, 2, 3, 4)}

或者,使用列表代替:

>>> d1 = {'a': [1, 2, 3]}
>>> d1['a'].append(4)
>>> d1
{'a': [1, 2, 3, 4]}

【讨论】:

  • 你刚刚给了我一个想法,我必须进行测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-24
  • 1970-01-01
相关资源
最近更新 更多