如何添加到python字典而不替换

如何添加到python字典而不替换,python,python-2.7,dictionary,key,Python,Python 2.7,Dictionary,Key,我当前的代码是category1[name]=(number),但是如果出现相同的名称,字典中的值将被新的数字替换,我该如何使它这样做而不是被替换的值,保留原始值并添加新值,现在给键两个值,谢谢。您可以创建一个字典,将一个键映射到一个值列表,在该字典中,您希望将一个新值附加到存储在每个键上的值列表中 d = dict([]) d["name"] = 1 x = d["name"] d["name"] = [1

我当前的代码是
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,则返回
[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[other_key]
是否已经是一个列表。如果是,请使用
.append()
添加第三个、第四个。。。它的价值


否则您将得到一组嵌套列表。

我想这是最简单的方法:

category1 = {}
category1['firstKey'] = [7]
category1['firstKey'] += [9]
category1['firstKey']
应该给你:

[7, 9]

所以,用数字列表代替数字

一个键只有一个值,您需要将该值设置为元组或列表etc@Calum是正确的,并且可能应该复制他/她的评论作为答案。您需要更改值的表示形式以适应所需的语义。提示:
collections.defaultdict(list)