【问题标题】:Updating a sequence of Dictionaries in Python在 Python 中更新一系列字典
【发布时间】:2021-10-01 08:18:47
【问题描述】:

我遇到了一个需要解决dict.update() 问题的练习。

任务主体:dict.update 方法合并两个字典。写一个 接受任意数量的字典并返回一个字典的函数 反映了所有这些的组合。如果相同的键出现在 多个dict,那么最近合并的dict的值应该 出现在输出中。

我设法为 2 个输入编写了代码:

def d_update(first, second):
    first = first.update(second)
    return d1

d1 = {'a': 1, 'b': 2, 'c': 3}
d2 = {'a': 1, 'b': 2, 'c': 5}

print(d_update(d1,d2)) #outout is {'a': 1, 'b': 2, 'c': 5}

但我正在努力安排多个听写序列。尝试使用:

def d_update(*sequence):
    for D in sequence:
        D = D.update(D)
    return D

但它返回None。

我该怎么办?

【问题讨论】:

  • D.update(D) .update 是一个就地函数。它返回None

标签: python dictionary iteration sequence


【解决方案1】:

您的代码绝对正确。你只是犯了一个小错误。

.update 是一个就地函数。它返回 None 或什么都不返回。 通过执行D=D.update(D),您将None 分配给D

只需D.update(D)

这是更新后的代码。

def d_update(*sequence):
    for D in sequence:
        D.update(D)
    return D

d1 = {'a': 1, 'b': 2, 'c': 3}
d2 = {'a': 1, 'b': 2, 'c': 5}

print(d_update(d1,d2)) #outout is {'a': 1, 'b': 2, 'c': 5}

【讨论】:

  • 现在知道了真是令人惊讶...我如何知道该函数是否是就地函数?
  • 我的意思是,有时我会错过必须为变量分配动作的部分,有时我会这样做但这是不正确的 我怎么知道何时选择正确的?
猜你喜欢
  • 1970-01-01
  • 2014-10-29
  • 2015-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多