【问题标题】:Appending values to the dictionaries in python将值附加到python中的字典
【发布时间】:2021-12-21 16:49:26
【问题描述】:

有 2 个具有相同键数的字典。键的名称相似且相关但不相同。两个字典的每个键的值都是 200*100 大小的 numpy 数组。要求是将其中一个字典的值附加到另一个字典,最后只保留一个字典。

例如:

Dic1 = {K1: np.array([V1]), K2:np.array([V2]),...,K100:np.array([V100])}

Dic2 = {Ky1: np.array([Va1]), Ky2:np.array([Va2]),...,Ky100:np.array([Va100])}


d2v=[*Dic2.values()]

for k, v in Dic1:
    d2v[k].append(v) 

两个字典都包含 100 个名称相似的键,值 V1,V2,...V100 和 Va1,Va2,....,Va100 是 200*100 大小的 numpy 数组。

上述解压字典 Dic2 并将其值附加到 Dic1 的逻辑似乎不起作用。有什么提示可以进一步将其中一个字典的值附加到另一个字典并最终只保留一个字典?

【问题讨论】:

    标签: python numpy dictionary


    【解决方案1】:

    问题出在 forloop 中:

    for k, v in Dic1:
    d2v[k].append(v) 
    

    当您遍历字典时,您实际上会从字典中接收键值。因此您可能收到错误 "Not enough values to unpack"。要解决此问题并获取键和值,请使用 Dic1.items() 它返回每个键值对的元组。 这里:

    for k, v in Dic1.items():
    d2v[k].append(v)
    

    这应该可以解决您面临的问题。

    【讨论】:

    • 感谢您的回复。我尝试了将numpy数组作为值和列表作为值的代码。对于 numpy 数组,“附加”是不可能的,对于列表,错误是“列表索引超出范围”。
    • 你能举一个 Dic1 和 Dic2 的例子,即 Ki 和 Kyi 值的样子。另请说明您在执行 d2V[K].append(v) 时的期望
    猜你喜欢
    • 2016-12-30
    • 2023-02-02
    • 2019-03-29
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多