将新密钥添加到字典中?

在Python字典创build之后是否可以添加一个键? 它似乎没有.add()方法。

 >>> d = {'key':'value'} >>> print(d) {'key': 'value'} >>> d['mynewkey'] = 'mynewvalue' >>> print(d) {'mynewkey': 'mynewvalue', 'key': 'value'} 
 >>> x = {1:2} >>> print x {1: 2} >>> x.update({3:4}) >>> print x {1: 2, 3: 4} 

我觉得整理有关Python字典的信息:

 ### Creating an empty dictionary ### data = {} # OR data = dict() ### Creating a dictionary with initial values ### data = {'a':1,'b':2,'c':3} # OR data = dict(a=1, b=2, c=3) # OR data = {k: v for k, v in (('a', 1),('b',2),('c',3))} ### Inserting/Updating a single value ### data['a']=1 # Updates if 'a' exists, else adds 'a' # OR data.update({'a':1}) # OR data.update(dict(a=1)) # OR data.update(a=1) ### Inserting/Updating multiple values ### data.update({'c':3,'d':4}) # Updates 'c' and adds 'd' ### Creating a merged dictionary without modifying originals data3 = {} data3.update(data) # Modifies data3, not data data3.update(data2) # Modifies data3, not data2 ### Deleting items in dictionary ### del data[key] # Removes specific element in a dictionary data.pop(key) # Removes the key & returns the value data.clear() # Clears entire dictionary ### Check if a key is already in dictionary key in data ### Iterate through pairs in a dictionary for key in data: # Iterates just through the keys, ignoring the values for key, value in d.items(): # Iterates through the pairs 

随意添加更多!

是的,这很容易。 只要做到以下几点:

 dict["key"] = "value" 

“在创buildPython字典之后是否可以添加一个键?它似乎没有.add()方法。”

是的,这是可能的,它有一个方法来实现这一点,但你不想直接使用它。

为了演示如何以及如何不使用它,让我们创build一个字典字典的空字典{}

 my_dict = {} 

最佳实践1:下标符号

要用一个新的键和值更新这个词典,你可以使用下标符号(见这里的映射)来提供项目分配:

 my_dict['new key'] = 'new value' 

my_dict现在是:

 {'new key': 'new value'} 

最佳实践2: update方法 – 2种方法

我们也可以使用update方法有效地更新多个值的字典。 我们在这里可能会不必要地额外制造一个dict ,所以我们希望我们的dict已经被创造出来,或被用于另一个目的:

 my_dict.update({'key 2': 'value 2', 'key 3': 'value 3'}) 

my_dict现在是:

 {'key 2': 'value 2', 'key 3': 'value 3', 'new key': 'new value'} 

更新方法的另一个有效方法是使用关键字参数,但是由于它们必须是合法的python单词,因此不能有空格或特殊符号,或者用数字开始名称,但是许多人认为这是一种更可读的方式为字典创build密钥,在这里我们当然避免创build一个额外的不必要的dict

 my_dict.update(foo='bar', foo2='baz') 

my_dict现在是:

 {'key 2': 'value 2', 'key 3': 'value 3', 'new key': 'new value', 'foo': 'bar', 'foo2': 'baz'} 

所以现在我们已经介绍了更新dict三种Pythonic方法。


魔法, __setitem__ ,以及为什么应该避免

还有另一种更新dict ,你不应该使用__setitem__方法。 下面是一个例子,说明如何使用__setitem__方法将一个键值对添加到一个dict ,并演示使用它的糟糕performance:

 >>> d = {} >>> d.__setitem__('foo', 'bar') >>> d {'foo': 'bar'} >>> def f(): ... d = {} ... for i in xrange(100): ... d['foo'] = i ... >>> def g(): ... d = {} ... for i in xrange(100): ... d.__setitem__('foo', i) ... >>> import timeit >>> number = 100 >>> min(timeit.repeat(f, number=number)) 0.0020880699157714844 >>> min(timeit.repeat(g, number=number)) 0.005071878433227539 

所以我们看到使用下标符号实际上比使用__setitem__快得多。 做Pythonic的事情,也就是说,按照它打算使用的方式使用语言,通常更具可读性和计算效率。

 dictionary[key] = value 

如果你想在字典中添加一个字典,你可以这样做。

例如:添加一个新的条目到你的词典和子词典

 dictionary = {} dictionary["new key"] = "some new entry" # add new dictionary entry dictionary["dictionary_within_a_dictionary"] = {} # this is required by python dictionary["dictionary_within_a_dictionary"]["sub_dict"] = {"other" : "dictionary"} print (dictionary) 

输出:

 {'new key': 'some new entry', 'dictionary_within_a_dictionary': {'sub_dict': {'other': 'dictionarly'}}} 

注: Python需要你先添加一个子

 dictionary["dictionary_within_a_dictionary"] = {} 

在添加条目之前。

正统的语法是d[key] = value ,但是如果你的键盘缺less方括号键你可以这样做:

 d.__setitem__(key, value) 

实际上,定义__getitem____setitem__方法是你可以使自己的类支持方括号语法。 请参阅http://www.diveintopython.net/object_oriented_framework/special_class_methods.html

你可以创build一个

 class myDict(dict): def __init__(self): self = dict() def add(self, key, value): self[key] = value ## example myd = myDict() myd.add('apples',6) myd.add('bananas',3) print(myd) 

 >>> {'apples': 6, 'bananas': 3} 

这个受欢迎的问题解决了合并词典ab function方法。

这里有一些更直接的方法(在Python 3中testing)…

 c = dict( a, **b ) ## see also https://stackoverflow.com/q/2255878 c = dict( list(a.items()) + list(b.items()) ) c = dict( i for d in [a,b] for i in d.items() ) 

注意:如果b中的键是string,上面的第一个方法才有效。

要添加或修改单个元素b字典将只包含该元素…

 c = dict( a, **{'d':'dog'} ) ## returns a dictionary based on 'a' 

这相当于…

 def functional_dict_add( dictionary, key, value ): temp = dictionary.copy() temp[key] = value return temp c = functional_dict_add( a, 'd', 'dog' ) 
 data = {} data['a'] = 'A' data['b'] = 'B' for key, value in data.iteritems(): print "%s-%s" % (key, value) 

结果是

 aA bB 

这正是我要做的:#用sapce修复数据

 data = {} data['f'] = 'F' data['c'] = 'C' for key, value in data.iteritems(): print "%s-%s" % (key, value) 

这对我有用。 请享用!

我们可以通过这种方式向字典添加新的键:

Dictionary_Name [New_Key_Name] = New_Key_Value

这是例子:

 # This is my dictionary my_dict = {'Key1': 'Value1', 'Key2': 'Value2'} # Now add new key in my dictionary my_dict['key3'] = 'Value3' # Print updated dictionary print my_dict 

输出:

 {'key3': 'Value3', 'Key2': 'Value2', 'Key1': 'Value1'} 

它有一个更新方法,你可以这样使用:

dict.update({"key" : "value"})

这么多的答案,仍然每个人都忘记了这个奇怪的,奇怪的行为,但仍然方便dict.setdefault()

这个

 value = my_dict.setdefault(key, default) 

基本上只是这样做:

 try: value = my_dict[key] except KeyError: # key not found value = my_dict[key] = default 

例如

 >>> mydict = {'a':1, 'b':2, 'c':3} >>> mydict.setdefault('d', 4) 4 # returns new value at mydict['d'] >>> print(mydict) {'a':1, 'b':2, 'c':3, 'd':4} # a new key/value pair was indeed added # but see what happens when trying it on an existing key... >>> mydict.setdefault('a', 111) 1 # old value was returned >>> print(mydict) {'a':1, 'b':2, 'c':3, 'd':4} # existing key was ignored 

基本上有两个简单的方法,你可以在字典中添加新的密钥

 dict_input = {'one': 1, 'two': 2, 'three': 3} #1. Set a new value dict_input['four'] = 4 #2. or use the update() function dict_input.update({'five': 5}) 

使用下标赋值运算符:

 d['x'] = "value" 

不要忘记,Python的关键字可以通过任何可哈希表示boolintstring甚至是元组或任何对象可哈希。