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

时间:2015-03-25 02:58:47

标签: python python-2.7 dictionary key

我当前的代码是category1[name]=(number)但是如果出现相同的名称,字典中的值将替换为新的数字,我将如何制作它而不是替换的值保留原始值,新的值也被添加,现在给出关键的两个值,谢谢。

6 个答案:

答案 0 :(得分:2)

您必须使字典指向列表而不是数字,例如,如果您有两个类别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]。< / p>

请注意,如果您不想存储重复的密钥,则可以使用集合而不是列表:

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)

答案 1 :(得分:0)

您可以创建一个字典,在该字典中将键映射到值列表,在该字典中,您希望将新值附加到存储在每个键的值列表中。

           d = dict([])
           d["name"] = 1
           x = d["name"]
           d["name"] = [1] + x

答案 2 :(得分:0)

一个键只有一个值,你需要将值设为元组或列表等

如果您知道某个密钥有多个值,那么我建议您在创建密钥时能够处理这个值

答案 3 :(得分:0)

理解你的问题有点难。

我想你想要这个:

>>> d[key] = [4]
>>> d[key].append(5)
>>> d[key]
[4, 5]

答案 4 :(得分:0)

根据您的期望,您可以检查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()向其添加第三个,第四个......值。

否则你会得到一组嵌套列表。

答案 5 :(得分:0)

我想这是最简单的方法:

category1 = {}
category1['firstKey'] = [7]
category1['firstKey'] += [9]
category1['firstKey']

应该给你:

[7, 9]

所以,只需使用数字列表而不是数字。