如何在不替换的情况下添加到 python 字典
How to add to python dictionary without replacing
我的当前代码是 category1[name]=(number)
但是,如果出现相同的名称,字典中的值将被新数字替换,我将如何做到这一点,而不是替换原始值保留并添加新值,现在给键两个值,谢谢。
您可以创建一个字典,在其中将一个键映射到一个值列表,您希望在其中将一个新值附加到存储在每个键上的值列表中。
d = dict([])
d["name"] = 1
x = d["name"]
d["name"] = [1] + x
您必须使字典指向列表而不是数字,例如,如果您有两个数字用于类别 cat1
:
categories["cat1"] = [21, 78]
为确保将新号码添加到列表中而不是替换它们,请在添加之前先检查它是否在列表中:
cat_val = # Some value
if cat_key in categories:
categories[cat_key].append(cat_val)
else:
# Initialise it to a list containing one item
categories[cat_key] = [cat_val]
要访问这些值,您只需使用 categories[cat_key]
,如果有一个值为 12 的键,则为 return [12]
,如果有两个,则为 [12, 95]
该键的值。
请注意,如果您不想存储重复键,您可以使用集合而不是列表:
cat_val = # Some value
if cat_key in categories:
categories[cat_key].add(cat_val)
else:
# Initialise it to a set containing one item
categories[cat_key] = set(cat_val)
一个键只有一个值,您需要将该值设为元组或列表等
如果您知道您将拥有一个键的多个值,那么我建议您在创建这些值时使其能够处理这些值
你的问题有点难理解。
我想你想要这个:
>>> d[key] = [4]
>>> d[key].append(5)
>>> d[key]
[4, 5]
根据您的期望,您可以检查 name
- 您字典中的一个键 - 是否已经存在。如果是这样,您可以将其当前值更改为一个列表,其中包含以前的值和新值。
我没有测试这个,但也许你想要这样的东西:
mydict = {'key_1' : 'value_1', 'key_2' : 'value_2'}
another_key = 'key_2'
another_value = 'value_3'
if another_key in mydict.keys():
# another_key does already exist in mydict
mydict[another_key] = [mydict[another_key], another_value]
else:
# another_key doesn't exist in mydict
mydict[another_key] = another_value
多次执行此操作时要小心!如果您想要存储两个以上的值,您可能需要添加另一个检查 - 查看 mydict[another_key]
是否已经是一个列表。如果是这样,使用 .append()
添加第三个,第四个,...值。
否则你会得到一个嵌套列表的集合。
我想这是最简单的方法:
category1 = {}
category1['firstKey'] = [7]
category1['firstKey'] += [9]
category1['firstKey']
应该给你:
[7, 9]
因此,只需使用数字列表而不是数字。
我的当前代码是 category1[name]=(number)
但是,如果出现相同的名称,字典中的值将被新数字替换,我将如何做到这一点,而不是替换原始值保留并添加新值,现在给键两个值,谢谢。
您可以创建一个字典,在其中将一个键映射到一个值列表,您希望在其中将一个新值附加到存储在每个键上的值列表中。
d = dict([])
d["name"] = 1
x = d["name"]
d["name"] = [1] + x
您必须使字典指向列表而不是数字,例如,如果您有两个数字用于类别 cat1
:
categories["cat1"] = [21, 78]
为确保将新号码添加到列表中而不是替换它们,请在添加之前先检查它是否在列表中:
cat_val = # Some value
if cat_key in categories:
categories[cat_key].append(cat_val)
else:
# Initialise it to a list containing one item
categories[cat_key] = [cat_val]
要访问这些值,您只需使用 categories[cat_key]
,如果有一个值为 12 的键,则为 return [12]
,如果有两个,则为 [12, 95]
该键的值。
请注意,如果您不想存储重复键,您可以使用集合而不是列表:
cat_val = # Some value
if cat_key in categories:
categories[cat_key].add(cat_val)
else:
# Initialise it to a set containing one item
categories[cat_key] = set(cat_val)
一个键只有一个值,您需要将该值设为元组或列表等
如果您知道您将拥有一个键的多个值,那么我建议您在创建这些值时使其能够处理这些值
你的问题有点难理解。
我想你想要这个:
>>> d[key] = [4]
>>> d[key].append(5)
>>> d[key]
[4, 5]
根据您的期望,您可以检查 name
- 您字典中的一个键 - 是否已经存在。如果是这样,您可以将其当前值更改为一个列表,其中包含以前的值和新值。
我没有测试这个,但也许你想要这样的东西:
mydict = {'key_1' : 'value_1', 'key_2' : 'value_2'}
another_key = 'key_2'
another_value = 'value_3'
if another_key in mydict.keys():
# another_key does already exist in mydict
mydict[another_key] = [mydict[another_key], another_value]
else:
# another_key doesn't exist in mydict
mydict[another_key] = another_value
多次执行此操作时要小心!如果您想要存储两个以上的值,您可能需要添加另一个检查 - 查看 mydict[another_key]
是否已经是一个列表。如果是这样,使用 .append()
添加第三个,第四个,...值。
否则你会得到一个嵌套列表的集合。
我想这是最简单的方法:
category1 = {}
category1['firstKey'] = [7]
category1['firstKey'] += [9]
category1['firstKey']
应该给你:
[7, 9]
因此,只需使用数字列表而不是数字。