Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用python更新字典中的值?_Python_Python 3.x_Dictionary - Fatal编程技术网

如何用python更新字典中的值?

如何用python更新字典中的值?,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我有一本这样的字典: my_dict = {key1:value1, key2:value2} my_dict = {key1:[value1,new_value], key2:value2} 我想首先检查某个键是否存在如果是,我必须将现有键的值转换为列表,并向列表中添加其他值,如下所示: my_dict = {key1:value1, key2:value2} my_dict = {key1:[value1,new_value], key2:value2} 我的意思是,我只需要更新字典

我有一本这样的字典:

my_dict = {key1:value1, key2:value2}
my_dict = {key1:[value1,new_value], key2:value2}
我想首先检查某个键是否存在如果是,我必须将现有键的值转换为列表,并向列表中添加其他值,如下所示:

my_dict = {key1:value1, key2:value2}
my_dict = {key1:[value1,new_value], key2:value2}
我的意思是,我只需要更新字典中的一个键来列出它们。
有什么想法吗?

这是一种即使向某个键添加多个值也能正常工作的解决方案。您可以为此使用单独的功能:

#!/usr/bin/env python

def append_value(d, key, value):
    if not key in d:
        d[key] = value
    else:
        if type(d[key]) != list:
            d[key] = [d[key], value]
        else:
            d[key].append(value)



my_dict = {"key1": 1, "key2": 2}
print(my_dict)


append_value(my_dict, 'key1', 4)
print(my_dict)
append_value(my_dict, 'key1', 5)
print(my_dict)
append_value(my_dict, 'key3', 6) # adding a key that doesn't exist
print(my_dict)
append_value(my_dict, 'key3', 7)
print(my_dict)
产出将是:

{'key2': 2, 'key1': 1} # initial value
{'key2': 2, 'key1': [1, 4]} # adding 4 to key1
{'key2': 2, 'key1': [1, 4, 5]} # adding 5 to key1
{'key3': 6, 'key2': 2, 'key1': [1, 4, 5]} # adding new key: key3
{'key3': [6, 7], 'key2': 2, 'key1': [1, 4, 5]} # adding 7 to key3

这是一种即使向某个键添加多个值也能正常工作的解决方案。您可以为此使用单独的功能:

#!/usr/bin/env python

def append_value(d, key, value):
    if not key in d:
        d[key] = value
    else:
        if type(d[key]) != list:
            d[key] = [d[key], value]
        else:
            d[key].append(value)



my_dict = {"key1": 1, "key2": 2}
print(my_dict)


append_value(my_dict, 'key1', 4)
print(my_dict)
append_value(my_dict, 'key1', 5)
print(my_dict)
append_value(my_dict, 'key3', 6) # adding a key that doesn't exist
print(my_dict)
append_value(my_dict, 'key3', 7)
print(my_dict)
产出将是:

{'key2': 2, 'key1': 1} # initial value
{'key2': 2, 'key1': [1, 4]} # adding 4 to key1
{'key2': 2, 'key1': [1, 4, 5]} # adding 5 to key1
{'key3': 6, 'key2': 2, 'key1': [1, 4, 5]} # adding new key: key3
{'key3': [6, 7], 'key2': 2, 'key1': [1, 4, 5]} # adding 7 to key3

如果给定键可能有一个或多个值,通常最好始终使用值列表,而不是有时使用列表,有时直接使用值。列表中可以只有一项,也可以有更多项。通过这种方式,您可以始终使用相同的代码来访问和修改值,而不管有多少个值

有几种好方法可以为这样的字典添加值。setdefault方法是一种简单的方法,可用于常规词典:

d = {"key1": ["value1"], "key2": ["value2"]}  # values are always lists

d.setdefault("key1", []).append("new_value")      # this adds a value to an existing list
d.setdefault("new_key", []).append("new_value2")  # this time the same code creates a new list
您还可以使用collections.defaultdict,它将在您查找尚未在字典中的键时自动创建新值

from collections import defaultdict

d = defaultdict(list)  # list is the "factory" that gets called to create new values

d["key1"].append("value1")
d["key2"].append("value2")
d["key1"].append("new_value")

如果给定键可能有一个或多个值,通常最好始终使用值列表,而不是有时使用列表,有时直接使用值。列表中可以只有一项,也可以有更多项。通过这种方式,您可以始终使用相同的代码来访问和修改值,而不管有多少个值

有几种好方法可以为这样的字典添加值。setdefault方法是一种简单的方法,可用于常规词典:

d = {"key1": ["value1"], "key2": ["value2"]}  # values are always lists

d.setdefault("key1", []).append("new_value")      # this adds a value to an existing list
d.setdefault("new_key", []).append("new_value2")  # this time the same code creates a new list
您还可以使用collections.defaultdict,它将在您查找尚未在字典中的键时自动创建新值

from collections import defaultdict

d = defaultdict(list)  # list is the "factory" that gets called to create new values

d["key1"].append("value1")
d["key2"].append("value2")
d["key1"].append("new_value")

如果密钥不存在怎么办!你试过什么?请阅读。如果my_dict.或my_dict.getkey1中的key1不存在或没有值,则返回None-因此第一种方法更好。如果密钥不存在,则更新my_dict[key1]=[my_dict[key1],新值],因此首先创建一个密钥并将相关值放入其中。如果密钥不存在怎么办!你试过什么?请阅读。如果my_dict.或my_dict.getkey1中的key1不存在或没有值,则返回None-因此第一种方法更好。如果密钥不存在,则更新my_dict[key1]=[my_dict[key1],new_value],因此首先创建一个密钥并将相关值放入其中。