Problem: A dictionary that maps key (key) to multiple values (so-called one-key multi-valued dictionary [multidict])
Solution: If you want the key to be mapped to multiple values, you need to keep the multiple values in another container such as a list or collection;
>>> d={'a': [+],'b': [4,5]}>>>d{'b': [4, 5],'a': [1, 2, 3]}>>> e={'a': {1,2,3,3},'b': {4,5}}>>>e{'b': {4, 5},'a': {1, 2, 3}}>>> f={' a ': [1,2,3,3], ' B ': [4,5]}
>>> F
{' B ': [4, 5], ' a ': [1, 2, 3, 3]}
>>>
A more convenient way to create such a dictionary is to take advantage of the Defaultdict class in the collections module. One feature of Defaultdict is that it automatically initializes the first value to the dictionary so that only the elements can be added. For example:
fromCollectionsImportDEFAULTDICTD=defaultdict (list)#creates a dictionary of multiple values for a key, and the value of key is the list typed['a'].append (1) d['a'].append (2) d['a'].append (2) d['b'].append (4) C=defaultdict (SET)#creates a dictionary of multiple values for a key, and the value of key is the set typec['a'].add (1) c['a'].add (2) c['a'].add (2) c['b'].add (4)Print('the value of key is a dictionary of the list type:', D)Print('the value of key is a dictionary of the set type:'C
>>> ================================ RESTART ================================>>>the value of key is a dictionary of list type: Defaultdict (<class 'List', {'b': [4],'a': [1, 2, 2]}) The value of key is a dictionary of the set type: Defaultdict (<class 'Set', {'b': {4},'a': {1, 2}})>>>
One thing to note about Defaultdict is that he automatically creates dictionary table entries for later access, even if they are not currently found in the dictionary.
If you want to cancel this function, you can call the SetDefault () method in a normal dictionary instead, for example:
# an ordinary dictionary d.setdefault ('a', []). Append (1) d.setdefault ('A ', []). Append (2) d.setdefault ('a', []). Append (2) D.setdefault ('b', []). Append (4)
the value of >>> key is a dictionary of the list type: {'a''b': [4]}
Add:
It's easy to build a dictionary of one-click Multi-values, but if you try to initialize the first value yourself, this becomes messy, and if you use Defaultdic, the code will be much simpler:
pairs={ " a : [22,44]," b : [88 D =defaultdict (list) for key,value in Pairs.items (): D[key].append (value) Print (d)
>>> defaultdict (<class'list'), {'a ' ' b ': [[[[]]}]
"Python Cookbook" "Data Structure and algorithm" 6. Map keys to multiple values in the dictionary