How can I add new keys to a dictionary?

前端 未结 16 2667
梦毁少年i
梦毁少年i 2020-11-22 00:40

Is it possible to add a key to a Python dictionary after it has been created?

It doesn\'t seem to have an .add() method.

相关标签:
16条回答
  • 2020-11-22 01:26

    Let's pretend you want to live in the immutable world and do NOT want to modify the original but want to create a new dict that is the result of adding a new key to the original.

    In Python 3.5+ you can do:

    params = {'a': 1, 'b': 2}
    new_params = {**params, **{'c': 3}}
    

    The Python 2 equivalent is:

    params = {'a': 1, 'b': 2}
    new_params = dict(params, **{'c': 3})
    

    After either of these:

    params is still equal to {'a': 1, 'b': 2}

    and

    new_params is equal to {'a': 1, 'b': 2, 'c': 3}

    There will be times when you don't want to modify the original (you only want the result of adding to the original). I find this a refreshing alternative to the following:

    params = {'a': 1, 'b': 2}
    new_params = params.copy()
    new_params['c'] = 3
    

    or

    params = {'a': 1, 'b': 2}
    new_params = params.copy()
    new_params.update({'c': 3})
    

    Reference: https://stackoverflow.com/a/2255892/514866

    0 讨论(0)
  • 2020-11-22 01:29

    I feel like consolidating info about Python dictionaries:

    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'
    

    Python 3.9+:

    The update operator |= now works for dictionaries:

    data |= {'c':3,'d':4}
    

    Creating a merged dictionary without modifying originals

    data3 = {}
    data3.update(data)  # Modifies data3, not data
    data3.update(data2)  # Modifies data3, not data2
    

    Python 3.5+:

    This uses a new feature called dictionary unpacking.

    data = {**data1, **data2, **data3}
    

    Python 3.9+:

    The merge operator | now works for dictionaries:

    data = data1 | {'c':3,'d':4}
    

    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
    for key in d.keys(): # Iterates just through key, ignoring the values
    for value in d.values(): # Iterates just through value, ignoring the keys
    

    Create a dictionary from two lists

    data = dict(zip(list_with_keys, list_with_values))
    
    0 讨论(0)
  • 2020-11-22 01:29

    If you're not joining two dictionaries, but adding new key-value pairs to a dictionary, then using the subscript notation seems like the best way.

    import timeit
    
    timeit.timeit('dictionary = {"karga": 1, "darga": 2}; dictionary.update({"aaa": 123123, "asd": 233})')
    >> 0.49582505226135254
    
    timeit.timeit('dictionary = {"karga": 1, "darga": 2}; dictionary["aaa"] = 123123; dictionary["asd"] = 233;')
    >> 0.20782899856567383
    

    However, if you'd like to add, for example, thousands of new key-value pairs, you should consider using the update() method.

    0 讨论(0)
  • 2020-11-22 01:36

    If you want to add a dictionary within a dictionary you can do it this way.

    Example: Add a new entry to your dictionary & sub dictionary

    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)
    

    Output:

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

    NOTE: Python requires that you first add a sub

    dictionary["dictionary_within_a_dictionary"] = {}
    

    before adding entries.

    0 讨论(0)
提交回复
热议问题