【问题标题】:Adding dictionary values to a list, which is a value to a dictionary将字典值添加到列表中,该列表是字典的值
【发布时间】:2015-04-02 18:32:49
【问题描述】:

我有一个 Python 字典,其中包含值字段作为列表。 我想根据键值将字典值附加到每个列表。 我该怎么做?我有一个示例字典,我对其进行迭代并获取要附加到列表的值。我以某种方式编写的代码似乎将示例字典中的所有值添加到字典中的所有键值中,并将值附加到。 我做错了什么?

default_value = []
a = dict.fromkeys(li, default_value)
for key, value in data.items():
    if key == "items":
        for val in value:
            a[val['owner']['display_name']].append(val)

【问题讨论】:

    标签: python dictionary


    【解决方案1】:
    a = dict.fromkeys([1, 2, 3], [])
    

    创建字典:

    {1: [],
     2: [],
     3: []}
    

    所有值都指向同一个字典。

    a[1].append(5)
    
    {1: [5],
     2: [5],
     3: [5]}
    

    你必须在一个真正的循环中创建字典:

    a = {k: [] for k in li}
    

    你的代码 sn-p 可以写成:

    a = {k: [] for k in li}
    for val in data['items']:
        a[val['owner']['display_name']].append(val)
    

    【讨论】:

    • 在您的缩短代码 sn-p 中,val 未定义。外部for 循环不是必需的,但我认为内部循环 需要的。
    • 那行得通。已经让我头疼了一段时间。你能解释一下为什么它的行为方式就像 a[1].append(5) 改变所有值一样吗?
    • @user3340996 - 因为列表是可变对象。它可能有很多指针,并且都可以修改它的属性(例如元素)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-05
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    相关资源
    最近更新 更多