如何用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],因此首先创建一个密钥并将相关值放入其中。