python - 如何在不创建新字典的情况下更新字典?

标签 python list dictionary append

此问题指定将字典和整数列表作为参数传递给函数,该函数应该通过删除整数列表中的列表值中的整数元素来更新字典。在本例中,传递整数列表 [2, 5] 并与字典值进行比较。

例如,给定字典:

1. {3: [3, 7, 4], 7: [6, 1, 2, 5, 5, 2], 2: [2, 1, 8, 0], 8: [-3, 9, 5]}

更新后:

2. {3: [3, 7, 4], 7: [6, 1], 2: [1, 8, 0], 8: [-3, 9]}

请注意,列表值已删除所有 2 和 5,因为整数列表 [2, 5] 是参数之一。

如果我不返回字典,它会返回 None,但我也不能直接返回原始字典,因为它返回完全相同的字典,没有删除任何整数。我还尝试创建一个新字典,并使用 items 方法再次追加所有内容,但删除了一些整数,但这也没有返回更新的字典。

代码:

def main():
    a_dict = {3: [3, 7, 4], 7: [6, 1, 2, 5, 5, 2], 2: [2, 1, 8, 0], 8: [-3, 9, 5]}
    print("1.", a_dict)
    updated = update_corresponding_values(a_dict, [2, 5])
    print("2.", updated)

def update_corresponding_values(a_dict, list1):
    for value in a_dict.items():
        if value in list1:
            del a_dict[value]

main()

预期:

1. {3: [3, 7, 4], 7: [6, 1, 2, 5, 5, 2], 2: [2, 1, 8, 0], 8: [-3, 9, 5]}

2. {3: [3, 7, 4], 7: [6, 1], 2: [1, 8, 0], 8: [-3, 9]}

得到:(如果我退回东西)

1. {3: [3, 7, 4], 7: [6, 1, 2, 5, 5, 2], 2: [2, 1, 8, 0], 8: [-3, 9, 5]}
2. {3: [3, 7, 4], 7: [6, 1, 2, 5, 5, 2], 2: [2, 1, 8, 0], 8: [-3, 9, 5]}

最佳答案

我认为您的 update_corresponding_values 函数在多个方面都不正确。例如,updated 应该是 None,因为函数不返回任何内容,它只是更改 a_dict 对象。其次,O 认为 if 语句永远不会触发,因为 value 是一个元组 (key,value_list),所以它基本上是检查 key == [2,5] 是否> 或 value_list == [2,5]

尝试:

def update_corresponding_values(a_dict, list1):
    for key in a_dict.keys():
        new_list = []
        for value in a_dict[key]:
            if value in list1:
                continue
            new_list.append(value)
        a_dict[key] = new_list
    return a_dict

关于python - 如何在不创建新字典的情况下更新字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57389785/

相关文章:

python - 车轮名称与平台无关,即使我的包包含已编译的库

Python:查找相同列表出现的次数并取平均值

c++ - std::map:使用键类以外的参数重载 operator<

.net - 查找性能 : Array, 列表还是字典?

python - 我们怎么称呼这个(新的?)高阶函数?

python - 格式化程序有问题 : "unsupported operand type(s) for %: ' NoneType' and 'tuple' "

python - 将字符串拆分为空白列表,当下一个字符不是破折号时不包括单个空格

Python:更新字典的简洁方法

python - 如何在Django运行时中进行更改?

python - Cython/python - cdef 类列表