-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathdictionary.html
More file actions
299 lines (238 loc) · 92 KB
/
dictionary.html
File metadata and controls
299 lines (238 loc) · 92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Python - Dictionary</title>
<meta name="generator" content="VuePress 1.8.2">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
<meta name="description" content="Introduction to Dictionary, Avoiding KeyError Exceptions, Iterating Over a Dictionary, Dictionary with default values, Merging dictionaries, Accessing values of a dictionary, Accessing keys and values, Creating an ordered dictionary, Unpacking dictionaries using the ** operator, Creating a dictionary, The dict() constructor, The trailing comma, All combinations of dictionary values, Dictionaries Example">
<meta property="og:site_name" content="DevTut">
<meta property="og:title" content="Python - Dictionary">
<meta property="og:description" content="Introduction to Dictionary, Avoiding KeyError Exceptions, Iterating Over a Dictionary, Dictionary with default values, Merging dictionaries, Accessing values of a dictionary, Accessing keys and values, Creating an ordered dictionary, Unpacking dictionaries using the ** operator, Creating a dictionary, The dict() constructor, The trailing comma, All combinations of dictionary values, Dictionaries Example">
<meta property="og:type" content="article">
<meta property="og:url" content="/python/dictionary.html">
<meta property="og:image" content="/logo.png">
<meta name="twitter:title" content="Python - Dictionary">
<meta name="twitter:description" content="Introduction to Dictionary, Avoiding KeyError Exceptions, Iterating Over a Dictionary, Dictionary with default values, Merging dictionaries, Accessing values of a dictionary, Accessing keys and values, Creating an ordered dictionary, Unpacking dictionaries using the ** operator, Creating a dictionary, The dict() constructor, The trailing comma, All combinations of dictionary values, Dictionaries Example">
<meta name="twitter:url" content="/python/dictionary.html">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="/logo.png">
<meta name="theme-color" content="#ffffff">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="msapplication-TileImage" content="/mstile-150x150.png">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="google-site-verification" content="76_rKXgwMVIjd-axJC_1zPV9OS4mEjvtgjYOWVkAdnQ">
<link rel="preload" href="/assets/css/0.styles.60619e34.css" as="style"><link rel="preload" href="/assets/js/app.1779e102.js" as="script"><link rel="preload" href="/assets/js/3.2cfa8016.js" as="script"><link rel="preload" href="/assets/js/2696.1221c46d.js" as="script">
<link rel="stylesheet" href="/assets/css/0.styles.60619e34.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><!----> <span class="site-name">DevTut</span></a> <div class="links"><form id="search-form" role="search" class="algolia-search-wrapper search-box"><input id="algolia-search-input" class="search-query"></form> <nav class="nav-links can-hide"> <a href="https://github.com/devtut/generate" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"> <a href="https://github.com/devtut/generate" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>Python</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/python/" aria-current="page" class="sidebar-link">Disclaimer</a></li><li><a href="/python/getting-started-with-python-language.html" class="sidebar-link">Getting started with Python Language</a></li><li><a href="/python/python-data-types.html" class="sidebar-link">Python Data Types</a></li><li><a href="/python/indentation.html" class="sidebar-link">Indentation</a></li><li><a href="/python/comments-and-documentation.html" class="sidebar-link">Comments and Documentation</a></li><li><a href="/python/date-and-time.html" class="sidebar-link">Date and Time</a></li><li><a href="/python/enum.html" class="sidebar-link">Enum</a></li><li><a href="/python/set.html" class="sidebar-link">Set</a></li><li><a href="/python/simple-mathematical-operators.html" class="sidebar-link">Simple Mathematical Operators</a></li><li><a href="/python/bitwise-operators.html" class="sidebar-link">Bitwise Operators</a></li><li><a href="/python/boolean-operators.html" class="sidebar-link">Boolean Operators</a></li><li><a href="/python/operator-precedence.html" class="sidebar-link">Operator Precedence</a></li><li><a href="/python/variable-scope-and-binding.html" class="sidebar-link">Variable Scope and Binding</a></li><li><a href="/python/conditionals.html" class="sidebar-link">Conditionals</a></li><li><a href="/python/comparisons.html" class="sidebar-link">Comparisons</a></li><li><a href="/python/loops.html" class="sidebar-link">Loops</a></li><li><a href="/python/arrays.html" class="sidebar-link">Arrays</a></li><li><a href="/python/multidimensional-arrays.html" class="sidebar-link">Multidimensional arrays</a></li><li><a href="/python/dictionary.html" aria-current="page" class="active sidebar-link">Dictionary</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/python/dictionary.html#introduction-to-dictionary" class="sidebar-link">Introduction to Dictionary</a></li><li class="sidebar-sub-header"><a href="/python/dictionary.html#avoiding-keyerror-exceptions" class="sidebar-link">Avoiding KeyError Exceptions</a></li><li class="sidebar-sub-header"><a href="/python/dictionary.html#iterating-over-a-dictionary" class="sidebar-link">Iterating Over a Dictionary</a></li><li class="sidebar-sub-header"><a href="/python/dictionary.html#dictionary-with-default-values" class="sidebar-link">Dictionary with default values</a></li><li class="sidebar-sub-header"><a href="/python/dictionary.html#merging-dictionaries" class="sidebar-link">Merging dictionaries</a></li><li class="sidebar-sub-header"><a href="/python/dictionary.html#accessing-values-of-a-dictionary" class="sidebar-link">Accessing values of a dictionary</a></li><li class="sidebar-sub-header"><a href="/python/dictionary.html#accessing-keys-and-values" class="sidebar-link">Accessing keys and values</a></li><li class="sidebar-sub-header"><a href="/python/dictionary.html#creating-an-ordered-dictionary" class="sidebar-link">Creating an ordered dictionary</a></li><li class="sidebar-sub-header"><a href="/python/dictionary.html#unpacking-dictionaries-using-the-operator" class="sidebar-link">Unpacking dictionaries using the ** operator</a></li><li class="sidebar-sub-header"><a href="/python/dictionary.html#creating-a-dictionary" class="sidebar-link">Creating a dictionary</a></li><li class="sidebar-sub-header"><a href="/python/dictionary.html#the-dict-constructor" class="sidebar-link">The dict() constructor</a></li><li class="sidebar-sub-header"><a href="/python/dictionary.html#the-trailing-comma" class="sidebar-link">The trailing comma</a></li><li class="sidebar-sub-header"><a href="/python/dictionary.html#all-combinations-of-dictionary-values" class="sidebar-link">All combinations of dictionary values</a></li><li class="sidebar-sub-header"><a href="/python/dictionary.html#dictionaries-example" class="sidebar-link">Dictionaries Example</a></li></ul></li><li><a href="/python/list.html" class="sidebar-link">List</a></li><li><a href="/python/list-comprehensions.html" class="sidebar-link">List Comprehensions</a></li><li><a href="/python/list-slicing-selecting-parts-of-lists.html" class="sidebar-link">List slicing (selecting parts of lists)</a></li><li><a href="/python/groupby.html" class="sidebar-link">groupby()</a></li><li><a href="/python/linked-lists.html" class="sidebar-link">Linked lists</a></li><li><a href="/python/linked-list-node.html" class="sidebar-link">Linked List Node</a></li><li><a href="/python/filter.html" class="sidebar-link">Filter</a></li><li><a href="/python/heapq.html" class="sidebar-link">Heapq</a></li><li><a href="/python/tuple.html" class="sidebar-link">Tuple</a></li><li><a href="/python/basic-input-and-output.html" class="sidebar-link">Basic Input and Output</a></li><li><a href="/python/files-folders-i-o.html" class="sidebar-link">Files & Folders I/O</a></li><li><a href="/python/os-path.html" class="sidebar-link">os.path</a></li><li><a href="/python/iterables-and-iterators.html" class="sidebar-link">Iterables and Iterators</a></li><li><a href="/python/functions.html" class="sidebar-link">Functions</a></li><li><a href="/python/defining-functions-with-list-arguments.html" class="sidebar-link">Defining functions with list arguments</a></li><li><a href="/python/functional-programming-in-python.html" class="sidebar-link">Functional Programming in Python</a></li><li><a href="/python/partial-functions.html" class="sidebar-link">Partial functions</a></li><li><a href="/python/decorators.html" class="sidebar-link">Decorators</a></li><li><a href="/python/classes.html" class="sidebar-link">Classes</a></li><li><a href="/python/metaclasses.html" class="sidebar-link">Metaclasses</a></li><li><a href="/python/string-formatting.html" class="sidebar-link">String Formatting</a></li><li><a href="/python/string-methods.html" class="sidebar-link">String Methods</a></li><li><a href="/python/using-loops-within-functions.html" class="sidebar-link">Using loops within functions</a></li><li><a href="/python/importing-modules.html" class="sidebar-link">Importing modules</a></li><li><a href="/python/difference-between-module-and-package.html" class="sidebar-link">Difference between Module and Package</a></li><li><a href="/python/math-module.html" class="sidebar-link">Math Module</a></li><li><a href="/python/complex-math.html" class="sidebar-link">Complex math</a></li><li><a href="/python/collections-module.html" class="sidebar-link">Collections module</a></li><li><a href="/python/operator-module.html" class="sidebar-link">Operator module</a></li><li><a href="/python/json-module.html" class="sidebar-link">JSON Module</a></li><li><a href="/python/sqlite3-module.html" class="sidebar-link">Sqlite3 Module</a></li><li><a href="/python/the-os-module.html" class="sidebar-link">The os Module</a></li><li><a href="/python/the-locale-module.html" class="sidebar-link">The locale Module</a></li><li><a href="/python/itertools-module.html" class="sidebar-link">Itertools Module</a></li><li><a href="/python/asyncio-module.html" class="sidebar-link">Asyncio Module</a></li><li><a href="/python/random-module.html" class="sidebar-link">Random module</a></li><li><a href="/python/functools-module.html" class="sidebar-link">Functools Module</a></li><li><a href="/python/the-dis-module.html" class="sidebar-link">The dis module</a></li><li><a href="/python/the-base64-module.html" class="sidebar-link">The base64 Module</a></li><li><a href="/python/queue-module.html" class="sidebar-link">Queue Module</a></li><li><a href="/python/deque-module.html" class="sidebar-link">Deque Module</a></li><li><a href="/python/webbrowser-module.html" class="sidebar-link">Webbrowser Module</a></li><li><a href="/python/tkinter.html" class="sidebar-link">tkinter</a></li><li><a href="/python/pyautogui-module.html" class="sidebar-link">pyautogui module</a></li><li><a href="/python/indexing-and-slicing.html" class="sidebar-link">Indexing and Slicing</a></li><li><a href="/python/plotting-with-matplotlib.html" class="sidebar-link">Plotting with Matplotlib</a></li><li><a href="/python/graph-tool.html" class="sidebar-link">graph-tool</a></li><li><a href="/python/generators.html" class="sidebar-link">Generators</a></li><li><a href="/python/reduce.html" class="sidebar-link">Reduce</a></li><li><a href="/python/map-function.html" class="sidebar-link">Map Function</a></li><li><a href="/python/exponentiation.html" class="sidebar-link">Exponentiation</a></li><li><a href="/python/searching.html" class="sidebar-link">Searching</a></li><li><a href="/python/sorting-minimum-and-maximum.html" class="sidebar-link">Sorting, Minimum and Maximum</a></li><li><a href="/python/counting.html" class="sidebar-link">Counting</a></li><li><a href="/python/the-print-function.html" class="sidebar-link">The Print Function</a></li><li><a href="/python/regular-expressions-regex.html" class="sidebar-link">Regular Expressions (Regex)</a></li><li><a href="/python/copying-data.html" class="sidebar-link">Copying data</a></li><li><a href="/python/context-managers-with-statement.html" class="sidebar-link">Context Managers (“with” Statement)</a></li><li><a href="/python/the-name-special-variable.html" class="sidebar-link">The _name_ special variable</a></li><li><a href="/python/checking-path-existence-and-permissions.html" class="sidebar-link">Checking Path Existence and Permissions</a></li><li><a href="/python/creating-python-packages.html" class="sidebar-link">Creating Python packages</a></li><li><a href="/python/usage-of-pip-module-pypi-package-manager.html" class="sidebar-link">Usage of "pip" module: PyPI Package Manager</a></li><li><a href="/python/pip-pypi-package-manager.html" class="sidebar-link">pip: PyPI Package Manager</a></li><li><a href="/python/parsing-command-line-arguments.html" class="sidebar-link">Parsing Command Line arguments</a></li><li><a href="/python/subprocess-library.html" class="sidebar-link">Subprocess Library</a></li><li><a href="/python/setup-py.html" class="sidebar-link">setup.py</a></li><li><a href="/python/recursion.html" class="sidebar-link">Recursion</a></li><li><a href="/python/type-hints.html" class="sidebar-link">Type Hints</a></li><li><a href="/python/exceptions.html" class="sidebar-link">Exceptions</a></li><li><a href="/python/raise-custom-errors-exceptions.html" class="sidebar-link">Raise Custom Errors / Exceptions</a></li><li><a href="/python/commonwealth-exceptions.html" class="sidebar-link">Commonwealth Exceptions</a></li><li><a href="/python/urllib.html" class="sidebar-link">urllib</a></li><li><a href="/python/web-scraping-with-python.html" class="sidebar-link">Web scraping with Python</a></li><li><a href="/python/html-parsing.html" class="sidebar-link">HTML Parsing</a></li><li><a href="/python/manipulating-xml.html" class="sidebar-link">Manipulating XML</a></li><li><a href="/python/python-requests-post.html" class="sidebar-link">Python Requests Post</a></li><li><a href="/python/distribution.html" class="sidebar-link">Distribution</a></li><li><a href="/python/property-objects.html" class="sidebar-link">Property Objects</a></li><li><a href="/python/overloading.html" class="sidebar-link">Overloading</a></li><li><a href="/python/polymorphism.html" class="sidebar-link">Polymorphism</a></li><li><a href="/python/method-overriding.html" class="sidebar-link">Method Overriding</a></li><li><a href="/python/user-defined-methods.html" class="sidebar-link">User-Defined Methods</a></li><li><a href="/python/string-representations-of-class-instances-str-and-repr-methods.html" class="sidebar-link">String representations of class instances: _str and repr_ methods</a></li><li><a href="/python/debugging.html" class="sidebar-link">Debugging</a></li><li><a href="/python/reading-and-writing-csv.html" class="sidebar-link">Reading and Writing CSV</a></li><li><a href="/python/writing-to-csv-from-string-or-list.html" class="sidebar-link">Writing to CSV from String or List</a></li><li><a href="/python/dynamic-code-execution-with-exec-and-eval.html" class="sidebar-link">Dynamic code execution with exec and eval</a></li><li><a href="/python/pyinstaller-distributing-python-code.html" class="sidebar-link">PyInstaller - Distributing Python Code</a></li><li><a href="/python/data-visualization-with-python.html" class="sidebar-link">Data Visualization with Python</a></li><li><a href="/python/the-interpreter-command-line-console.html" class="sidebar-link">The Interpreter (Command Line Console)</a></li><li><a href="/python/args-and-kwargs.html" class="sidebar-link">args and *kwargs</a></li><li><a href="/python/garbage-collection.html" class="sidebar-link">Garbage Collection</a></li><li><a href="/python/pickle-data-serialisation.html" class="sidebar-link">Pickle data serialisation</a></li><li><a href="/python/binary-data.html" class="sidebar-link">Binary Data</a></li><li><a href="/python/idioms.html" class="sidebar-link">Idioms</a></li><li><a href="/python/data-serialization.html" class="sidebar-link">Data Serialization</a></li><li><a href="/python/multiprocessing.html" class="sidebar-link">Multiprocessing</a></li><li><a href="/python/multithreading.html" class="sidebar-link">Multithreading</a></li><li><a href="/python/processes-and-threads.html" class="sidebar-link">Processes and Threads</a></li><li><a href="/python/python-concurrency.html" class="sidebar-link">Python concurrency</a></li><li><a href="/python/parallel-computation.html" class="sidebar-link">Parallel computation</a></li><li><a href="/python/sockets.html" class="sidebar-link">Sockets</a></li><li><a href="/python/websockets.html" class="sidebar-link">Websockets</a></li><li><a href="/python/sockets-and-message-encryption-decryption-between-client-and-server.html" class="sidebar-link">Sockets And Message Encryption/Decryption Between Client and Server</a></li><li><a href="/python/python-networking.html" class="sidebar-link">Python Networking</a></li><li><a href="/python/python-http-server.html" class="sidebar-link">Python HTTP Server</a></li><li><a href="/python/flask.html" class="sidebar-link">Flask</a></li><li><a href="/python/introduction-to-rabbitmq-using-amqpstorm.html" class="sidebar-link">Introduction to RabbitMQ using AMQPStorm</a></li><li><a href="/python/descriptor.html" class="sidebar-link">Descriptor</a></li><li><a href="/python/tempfile-namedtemporaryfile.html" class="sidebar-link">tempfile NamedTemporaryFile</a></li><li><a href="/python/input-subset-and-output-external-data-files-using-pandas.html" class="sidebar-link">Input, Subset and Output External Data Files using Pandas</a></li><li><a href="/python/unzipping-files.html" class="sidebar-link">Unzipping Files</a></li><li><a href="/python/working-with-zip-archives.html" class="sidebar-link">Working with ZIP archives</a></li><li><a href="/python/getting-start-with-gzip.html" class="sidebar-link">getting start with GZip</a></li><li><a href="/python/stack.html" class="sidebar-link">Stack</a></li><li><a href="/python/working-around-the-global-interpreter-lock-gil.html" class="sidebar-link">Working around the Global Interpreter Lock (GIL)</a></li><li><a href="/python/deployment.html" class="sidebar-link">Deployment</a></li><li><a href="/python/logging.html" class="sidebar-link">Logging</a></li><li><a href="/python/web-server-gateway-interface-wsgi.html" class="sidebar-link">Web Server Gateway Interface (WSGI)</a></li><li><a href="/python/python-server-sent-events.html" class="sidebar-link">Python Server Sent Events</a></li><li><a href="/python/alternatives-to-switch-statement-from-other-languages.html" class="sidebar-link">Alternatives to switch statement from other languages</a></li><li><a href="/python/list-destructuring-aka-packing-and-unpacking.html" class="sidebar-link">List destructuring (aka packing and unpacking)</a></li><li><a href="/python/accessing-python-source-code-and-bytecode.html" class="sidebar-link">Accessing Python source code and bytecode</a></li><li><a href="/python/mixins.html" class="sidebar-link">Mixins</a></li><li><a href="/python/attribute-access.html" class="sidebar-link">Attribute Access</a></li><li><a href="/python/arcpy.html" class="sidebar-link">ArcPy</a></li><li><a href="/python/abstract-base-classes-abc.html" class="sidebar-link">Abstract Base Classes (abc)</a></li><li><a href="/python/plugin-and-extension-classes.html" class="sidebar-link">Plugin and Extension Classes</a></li><li><a href="/python/immutable-datatypes-int-float-str-tuple-and-frozensets.html" class="sidebar-link">Immutable datatypes(int, float, str, tuple and frozensets)</a></li><li><a href="/python/incompatibilities-moving-from-python-2-to-python-3.html" class="sidebar-link">Incompatibilities moving from Python 2 to Python 3</a></li><li><a href="/python/2to3-tool.html" class="sidebar-link">2to3 tool</a></li><li><a href="/python/non-official-python-implementations.html" class="sidebar-link">Non-official Python implementations</a></li><li><a href="/python/abstract-syntax-tree.html" class="sidebar-link">Abstract syntax tree</a></li><li><a href="/python/unicode-and-bytes.html" class="sidebar-link">Unicode and bytes</a></li><li><a href="/python/python-serial-communication-pyserial.html" class="sidebar-link">Python Serial Communication (pyserial)</a></li><li><a href="/python/neo4j-and-cypher-using-py2neo.html" class="sidebar-link">Neo4j and Cypher using Py2Neo</a></li><li><a href="/python/basic-curses-with-python.html" class="sidebar-link">Basic Curses with Python</a></li><li><a href="/python/templates-in-python.html" class="sidebar-link">Templates in python</a></li><li><a href="/python/pillow.html" class="sidebar-link">Pillow</a></li><li><a href="/python/the-pass-statement.html" class="sidebar-link">The pass statement</a></li><li><a href="/python/cli-subcommands-with-precise-help-output.html" class="sidebar-link">CLI subcommands with precise help output</a></li><li><a href="/python/database-access.html" class="sidebar-link">Database Access</a></li><li><a href="/python/connecting-python-to-sql-server.html" class="sidebar-link">Connecting Python to SQL Server</a></li><li><a href="/python/postgresql.html" class="sidebar-link">PostgreSQL</a></li><li><a href="/python/python-and-excel.html" class="sidebar-link">Python and Excel</a></li><li><a href="/python/turtle-graphics.html" class="sidebar-link">Turtle Graphics</a></li><li><a href="/python/python-persistence.html" class="sidebar-link">Python Persistence</a></li><li><a href="/python/design-patterns.html" class="sidebar-link">Design Patterns</a></li><li><a href="/python/hashlib.html" class="sidebar-link">hashlib</a></li><li><a href="/python/creating-a-windows-service-using-python.html" class="sidebar-link">Creating a Windows service using Python</a></li><li><a href="/python/mutable-vs-immutable-and-hashable-in-python.html" class="sidebar-link">Mutable vs Immutable (and Hashable) in Python</a></li><li><a href="/python/configparser.html" class="sidebar-link">configparser</a></li><li><a href="/python/optical-character-recognition.html" class="sidebar-link">Optical Character Recognition</a></li><li><a href="/python/virtual-environments.html" class="sidebar-link">Virtual environments</a></li><li><a href="/python/python-virtual-environment-virtualenv.html" class="sidebar-link">Python Virtual Environment - virtualenv</a></li><li><a href="/python/virtual-environment-with-virtualenvwrapper.html" class="sidebar-link">virtual environment with virtualenvwrapper</a></li><li><a href="/python/create-virtual-environment-with-virtualenvwrapper-in-windows.html" class="sidebar-link">Create virtual environment with virtualenvwrapper in windows</a></li><li><a href="/python/sys.html" class="sidebar-link">sys</a></li><li><a href="/python/chempy-python-package.html" class="sidebar-link">ChemPy - python package</a></li><li><a href="/python/pygame.html" class="sidebar-link">pygame</a></li><li><a href="/python/pyglet.html" class="sidebar-link">Pyglet</a></li><li><a href="/python/audio.html" class="sidebar-link">Audio</a></li><li><a href="/python/pyaudio.html" class="sidebar-link">pyaudio</a></li><li><a href="/python/shelve.html" class="sidebar-link">shelve</a></li><li><a href="/python/iot-programming-with-python-and-raspberry-pi.html" class="sidebar-link">IoT Programming with Python and Raspberry PI</a></li><li><a href="/python/kivy-cross-platform-python-framework-for-nui-development.html" class="sidebar-link">kivy - Cross-platform Python Framework for NUI Development</a></li><li><a href="/python/pandas-transform-preform-operations-on-groups-and-concatenate-the-results.html" class="sidebar-link">Pandas Transform: Preform operations on groups and concatenate the results</a></li><li><a href="/python/similarities-in-syntax-differences-in-meaning-python-vs-javascript.html" class="sidebar-link">Similarities in syntax, Differences in meaning: Python vs. JavaScript</a></li><li><a href="/python/call-python-from-c.html" class="sidebar-link">Call Python from C#</a></li><li><a href="/python/ctypes.html" class="sidebar-link">ctypes</a></li><li><a href="/python/writing-extensions.html" class="sidebar-link">Writing extensions</a></li><li><a href="/python/python-lex-yacc.html" class="sidebar-link">Python Lex-Yacc</a></li><li><a href="/python/unit-testing.html" class="sidebar-link">Unit Testing</a></li><li><a href="/python/py-test.html" class="sidebar-link">py.test</a></li><li><a href="/python/profiling.html" class="sidebar-link">Profiling</a></li><li><a href="/python/python-speed-of-program.html" class="sidebar-link">Python speed of program</a></li><li><a href="/python/performance-optimization.html" class="sidebar-link">Performance optimization</a></li><li><a href="/python/security-and-cryptography.html" class="sidebar-link">Security and Cryptography</a></li><li><a href="/python/secure-shell-connection-in-python.html" class="sidebar-link">Secure Shell Connection in Python</a></li><li><a href="/python/python-anti-patterns.html" class="sidebar-link">Python Anti-Patterns</a></li><li><a href="/python/common-pitfalls.html" class="sidebar-link">Common Pitfalls</a></li><li><a href="/python/hidden-features.html" class="sidebar-link">Hidden Features</a></li><li><a href="/python/date-formatting.html" class="sidebar-link">Date Formatting</a></li><li><a href="/python/ijson.html" class="sidebar-link">ijson</a></li><li><a href="/python/django.html" class="sidebar-link">Django</a></li><li><a href="/python/code-blocks-execution-frames-and-namespaces.html" class="sidebar-link">Code blocks, execution frames, and namespaces</a></li><li><a href="/python/contributors.html" class="sidebar-link">The Contributors</a></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="dictionary"><a href="#dictionary" class="header-anchor">#</a> Dictionary</h1> <h2 id="introduction-to-dictionary"><a href="#introduction-to-dictionary" class="header-anchor">#</a> Introduction to Dictionary</h2> <p>A dictionary is an example of a <strong>key value store</strong> also known as <strong>Mapping</strong> in Python. It allows you to store and retrieve elements by referencing a key. As dictionaries are referenced by key, they have very fast lookups. As they are primarily used for referencing items by key, they are not sorted.</p> <h3 id="creating-a-dict"><a href="#creating-a-dict" class="header-anchor">#</a> creating a dict</h3> <p>Dictionaries can be initiated in many ways:</p> <h3 id="literal-syntax"><a href="#literal-syntax" class="header-anchor">#</a> literal syntax</h3> <div class="language-py extra-class"><pre class="language-py"><code>d <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span> <span class="token comment"># empty dict</span>
d <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">'key'</span><span class="token punctuation">:</span> <span class="token string">'value'</span><span class="token punctuation">}</span> <span class="token comment"># dict with initial values</span>
</code></pre></div><div class="language-py extra-class"><pre class="language-py"><code><span class="token comment"># Also unpacking one or multiple dictionaries with the literal syntax is possible</span>
<span class="token comment"># makes a shallow copy of otherdict</span>
d <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token operator">**</span>otherdict<span class="token punctuation">}</span>
<span class="token comment"># also updates the shallow copy with the contents of the yetanotherdict.</span>
d <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token operator">**</span>otherdict<span class="token punctuation">,</span> <span class="token operator">**</span>yetanotherdict<span class="token punctuation">}</span>
</code></pre></div><h3 id="dict-comprehension"><a href="#dict-comprehension" class="header-anchor">#</a> dict comprehension</h3> <div class="language-py extra-class"><pre class="language-py"><code>d <span class="token operator">=</span> <span class="token punctuation">{</span>k<span class="token punctuation">:</span>v <span class="token keyword">for</span> k<span class="token punctuation">,</span>v <span class="token keyword">in</span> <span class="token punctuation">[</span><span class="token punctuation">(</span><span class="token string">'key'</span><span class="token punctuation">,</span> <span class="token string">'value'</span><span class="token punctuation">,</span><span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token punctuation">}</span>
</code></pre></div><p>see also: <a href="http://stackoverflow.com/documentation/python/196/comprehensions#t=201604151707279475687" target="_blank" rel="noopener noreferrer">Comprehensions<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p> <h3 id="built-in-class-dict"><a href="#built-in-class-dict" class="header-anchor">#</a> built-in class: <code>dict()</code></h3> <div class="language-py extra-class"><pre class="language-py"><code>d <span class="token operator">=</span> <span class="token builtin">dict</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment"># emtpy dict</span>
d <span class="token operator">=</span> <span class="token builtin">dict</span><span class="token punctuation">(</span>key<span class="token operator">=</span><span class="token string">'value'</span><span class="token punctuation">)</span> <span class="token comment"># explicit keyword arguments</span>
d <span class="token operator">=</span> <span class="token builtin">dict</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token punctuation">(</span><span class="token string">'key'</span><span class="token punctuation">,</span> <span class="token string">'value'</span><span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token comment"># passing in a list of key/value pairs</span>
<span class="token comment"># make a shallow copy of another dict (only possible if keys are only strings!)</span>
d <span class="token operator">=</span> <span class="token builtin">dict</span><span class="token punctuation">(</span><span class="token operator">**</span>otherdict<span class="token punctuation">)</span>
</code></pre></div><h3 id="modifying-a-dict"><a href="#modifying-a-dict" class="header-anchor">#</a> modifying a dict</h3> <p>To add items to a dictionary, simply create a new key with a value:</p> <div class="language-py extra-class"><pre class="language-py"><code>d<span class="token punctuation">[</span><span class="token string">'newkey'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">42</span>
</code></pre></div><p>It also possible to add <code>list</code> and <code>dictionary</code> as value:</p> <div class="language-py extra-class"><pre class="language-py"><code>d<span class="token punctuation">[</span><span class="token string">'new_list'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span>
d<span class="token punctuation">[</span><span class="token string">'new_dict'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">'nested_dict'</span><span class="token punctuation">:</span> <span class="token number">1</span><span class="token punctuation">}</span>
</code></pre></div><p>To delete an item, delete the key from the dictionary:</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token keyword">del</span> d<span class="token punctuation">[</span><span class="token string">'newkey'</span><span class="token punctuation">]</span>
</code></pre></div><h2 id="avoiding-keyerror-exceptions"><a href="#avoiding-keyerror-exceptions" class="header-anchor">#</a> Avoiding KeyError Exceptions</h2> <p>One common pitfall when using dictionaries is to access a non-existent key. This typically results in a <code>KeyError</code> exception</p> <div class="language-py extra-class"><pre class="language-py"><code>mydict <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
mydict<span class="token punctuation">[</span><span class="token string">'not there'</span><span class="token punctuation">]</span>
</code></pre></div><div class="language-py extra-class"><pre class="language-py"><code>Traceback <span class="token punctuation">(</span>most recent call last<span class="token punctuation">)</span><span class="token punctuation">:</span>
File <span class="token string">"<stdin>"</span><span class="token punctuation">,</span> line <span class="token number">1</span><span class="token punctuation">,</span> <span class="token keyword">in</span> <span class="token operator"><</span>module<span class="token operator">></span>
KeyError<span class="token punctuation">:</span> <span class="token string">'not there'</span>
</code></pre></div><p>One way to avoid key errors is to use the <code>dict.get</code> method, which allows you to specify a default value to return in the case of an absent key.</p> <div class="language-py extra-class"><pre class="language-py"><code>value <span class="token operator">=</span> mydict<span class="token punctuation">.</span>get<span class="token punctuation">(</span>key<span class="token punctuation">,</span> default_value<span class="token punctuation">)</span>
</code></pre></div><p>Which returns <code>mydict[key]</code> if it exists, but otherwise returns <code>default_value</code>. Note that this doesn't add <code>key</code> to <code>mydict</code>. So if you want to retain that key value pair, you should use <code>mydict.setdefault(key, default_value)</code>, which <strong>does</strong> store the key value pair.</p> <div class="language-py extra-class"><pre class="language-py"><code>mydict <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token keyword">print</span><span class="token punctuation">(</span>mydict<span class="token punctuation">)</span>
<span class="token comment"># {}</span>
<span class="token keyword">print</span><span class="token punctuation">(</span>mydict<span class="token punctuation">.</span>get<span class="token punctuation">(</span><span class="token string">"foo"</span><span class="token punctuation">,</span> <span class="token string">"bar"</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
<span class="token comment"># bar</span>
<span class="token keyword">print</span><span class="token punctuation">(</span>mydict<span class="token punctuation">)</span>
<span class="token comment"># {}</span>
<span class="token keyword">print</span><span class="token punctuation">(</span>mydict<span class="token punctuation">.</span>setdefault<span class="token punctuation">(</span><span class="token string">"foo"</span><span class="token punctuation">,</span> <span class="token string">"bar"</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
<span class="token comment"># bar</span>
<span class="token keyword">print</span><span class="token punctuation">(</span>mydict<span class="token punctuation">)</span>
<span class="token comment"># {'foo': 'bar'}</span>
</code></pre></div><p>An alternative way to deal with the problem is catching the exception</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token keyword">try</span><span class="token punctuation">:</span>
value <span class="token operator">=</span> mydict<span class="token punctuation">[</span>key<span class="token punctuation">]</span>
<span class="token keyword">except</span> KeyError<span class="token punctuation">:</span>
value <span class="token operator">=</span> default_value
</code></pre></div><p>You could also check if the key is <code>in</code> the dictionary.</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token keyword">if</span> key <span class="token keyword">in</span> mydict<span class="token punctuation">:</span>
value <span class="token operator">=</span> mydict<span class="token punctuation">[</span>key<span class="token punctuation">]</span>
<span class="token keyword">else</span><span class="token punctuation">:</span>
value <span class="token operator">=</span> default_value
</code></pre></div><p>Do note, however, that in multi-threaded environments it is possible for the key to be removed from the dictionary after you check, creating a race condition where the exception can still be thrown.</p> <p>Another option is to use a subclass of dict, collections.defaultdict, that has a default_factory to create new entries in the dict when given a new_key.</p> <h2 id="iterating-over-a-dictionary"><a href="#iterating-over-a-dictionary" class="header-anchor">#</a> Iterating Over a Dictionary</h2> <p>If you use a dictionary as an iterator (e.g. in a <code>for</code> statement), it traverses the <strong>keys</strong> of the dictionary. For example:</p> <div class="language-py extra-class"><pre class="language-py"><code>d <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">'a'</span><span class="token punctuation">:</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">'b'</span><span class="token punctuation">:</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token string">'c'</span><span class="token punctuation">:</span><span class="token number">3</span><span class="token punctuation">}</span>
<span class="token keyword">for</span> key <span class="token keyword">in</span> d<span class="token punctuation">:</span>
<span class="token keyword">print</span><span class="token punctuation">(</span>key<span class="token punctuation">,</span> d<span class="token punctuation">[</span>key<span class="token punctuation">]</span><span class="token punctuation">)</span>
<span class="token comment"># c 3</span>
<span class="token comment"># b 2</span>
<span class="token comment"># a 1</span>
</code></pre></div><p>The same is true when used in a comprehension</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token keyword">print</span><span class="token punctuation">(</span><span class="token punctuation">[</span>key <span class="token keyword">for</span> key <span class="token keyword">in</span> d<span class="token punctuation">]</span><span class="token punctuation">)</span>
<span class="token comment"># ['c', 'b', 'a']</span>
</code></pre></div><p>The <code>items()</code> method can be used to loop over both the <strong>key</strong> and <strong>value</strong> simultaneously:</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token keyword">for</span> key<span class="token punctuation">,</span> value <span class="token keyword">in</span> d<span class="token punctuation">.</span>items<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
<span class="token keyword">print</span><span class="token punctuation">(</span>key<span class="token punctuation">,</span> value<span class="token punctuation">)</span>
<span class="token comment"># c 3</span>
<span class="token comment"># b 2</span>
<span class="token comment"># a 1</span>
</code></pre></div><p>While the <code>values()</code> method can be used to iterate over only the values, as would be expected:</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token keyword">for</span> key<span class="token punctuation">,</span> value <span class="token keyword">in</span> d<span class="token punctuation">.</span>values<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
<span class="token keyword">print</span><span class="token punctuation">(</span>key<span class="token punctuation">,</span> value<span class="token punctuation">)</span>
<span class="token comment"># 3</span>
<span class="token comment"># 2</span>
<span class="token comment"># 1</span>
</code></pre></div><p>Here, the methods <code>keys()</code>, <code>values()</code> and <code>items()</code> return lists, and there are the three extra methods <code>iterkeys()</code> <code>itervalues()</code> and <code>iteritems()</code> to return iteraters.</p> <h2 id="dictionary-with-default-values"><a href="#dictionary-with-default-values" class="header-anchor">#</a> Dictionary with default values</h2> <p>Available in the standard library as <a href="https://docs.python.org/3/library/collections.html#collections.defaultdict" target="_blank" rel="noopener noreferrer"><code>defaultdict</code><span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token keyword">from</span> collections <span class="token keyword">import</span> defaultdict
d <span class="token operator">=</span> defaultdict<span class="token punctuation">(</span><span class="token builtin">int</span><span class="token punctuation">)</span>
d<span class="token punctuation">[</span><span class="token string">'key'</span><span class="token punctuation">]</span> <span class="token comment"># 0</span>
d<span class="token punctuation">[</span><span class="token string">'key'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">5</span>
d<span class="token punctuation">[</span><span class="token string">'key'</span><span class="token punctuation">]</span> <span class="token comment"># 5</span>
d <span class="token operator">=</span> defaultdict<span class="token punctuation">(</span><span class="token keyword">lambda</span><span class="token punctuation">:</span> <span class="token string">'empty'</span><span class="token punctuation">)</span>
d<span class="token punctuation">[</span><span class="token string">'key'</span><span class="token punctuation">]</span> <span class="token comment"># 'empty'</span>
d<span class="token punctuation">[</span><span class="token string">'key'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token string">'full'</span>
d<span class="token punctuation">[</span><span class="token string">'key'</span><span class="token punctuation">]</span> <span class="token comment"># 'full'</span>
</code></pre></div><p>[*] Alternatively, if you must use the built-in <code>dict</code> class, <code>using dict.setdefault()</code> will allow you to create a default whenever you access a key that did not exist before:</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token operator">>></span><span class="token operator">></span> d <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token operator">>></span><span class="token operator">></span> d<span class="token punctuation">.</span>setdefault<span class="token punctuation">(</span><span class="token string">'Another_key'</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">.</span>append<span class="token punctuation">(</span><span class="token string">"This worked!"</span><span class="token punctuation">)</span>
<span class="token operator">>></span><span class="token operator">></span> d
<span class="token punctuation">{</span><span class="token string">'Another_key'</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">'This worked!'</span><span class="token punctuation">]</span><span class="token punctuation">}</span>
</code></pre></div><p>Keep in mind that if you have many values to add, <code>dict.setdefault()</code> will create a new instance of the initial value (in this example a <code>[]</code>) every time it's called - which may create unnecessary workloads.</p> <p>[*] <strong>Python Cookbook, 3rd edition, by David Beazley and Brian K. Jones (O’Reilly). Copyright 2013 David Beazley and Brian Jones, 978-1-449-34037-7.</strong></p> <h2 id="merging-dictionaries"><a href="#merging-dictionaries" class="header-anchor">#</a> Merging dictionaries</h2> <p>Consider the following dictionaries:</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token operator">>></span><span class="token operator">></span> fish <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">'name'</span><span class="token punctuation">:</span> <span class="token string">"Nemo"</span><span class="token punctuation">,</span> <span class="token string">'hands'</span><span class="token punctuation">:</span> <span class="token string">"fins"</span><span class="token punctuation">,</span> <span class="token string">'special'</span><span class="token punctuation">:</span> <span class="token string">"gills"</span><span class="token punctuation">}</span>
<span class="token operator">>></span><span class="token operator">></span> dog <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">'name'</span><span class="token punctuation">:</span> <span class="token string">"Clifford"</span><span class="token punctuation">,</span> <span class="token string">'hands'</span><span class="token punctuation">:</span> <span class="token string">"paws"</span><span class="token punctuation">,</span> <span class="token string">'color'</span><span class="token punctuation">:</span> <span class="token string">"red"</span><span class="token punctuation">}</span>
</code></pre></div><h3 id="python-3-5"><a href="#python-3-5" class="header-anchor">#</a> Python 3.5+</h3> <div class="language-py extra-class"><pre class="language-py"><code><span class="token operator">>></span><span class="token operator">></span> fishdog <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token operator">**</span>fish<span class="token punctuation">,</span> <span class="token operator">**</span>dog<span class="token punctuation">}</span>
<span class="token operator">>></span><span class="token operator">></span> fishdog
<span class="token punctuation">{</span><span class="token string">'hands'</span><span class="token punctuation">:</span> <span class="token string">'paws'</span><span class="token punctuation">,</span> <span class="token string">'color'</span><span class="token punctuation">:</span> <span class="token string">'red'</span><span class="token punctuation">,</span> <span class="token string">'name'</span><span class="token punctuation">:</span> <span class="token string">'Clifford'</span><span class="token punctuation">,</span> <span class="token string">'special'</span><span class="token punctuation">:</span> <span class="token string">'gills'</span><span class="token punctuation">}</span>
</code></pre></div><p>As this example demonstrates, duplicate keys map to their lattermost value (for example "Clifford" overrides "Nemo").</p> <h3 id="python-3-3"><a href="#python-3-3" class="header-anchor">#</a> Python 3.3+</h3> <div class="language-py extra-class"><pre class="language-py"><code><span class="token operator">>></span><span class="token operator">></span> <span class="token keyword">from</span> collections <span class="token keyword">import</span> ChainMap
<span class="token operator">>></span><span class="token operator">></span> <span class="token builtin">dict</span><span class="token punctuation">(</span>ChainMap<span class="token punctuation">(</span>fish<span class="token punctuation">,</span> dog<span class="token punctuation">)</span><span class="token punctuation">)</span>
<span class="token punctuation">{</span><span class="token string">'hands'</span><span class="token punctuation">:</span> <span class="token string">'fins'</span><span class="token punctuation">,</span> <span class="token string">'color'</span><span class="token punctuation">:</span> <span class="token string">'red'</span><span class="token punctuation">,</span> <span class="token string">'special'</span><span class="token punctuation">:</span> <span class="token string">'gills'</span><span class="token punctuation">,</span> <span class="token string">'name'</span><span class="token punctuation">:</span> <span class="token string">'Nemo'</span><span class="token punctuation">}</span>
</code></pre></div><p>With this technique the foremost value takes precedence for a given key rather than the last ("Clifford" is thrown out in favor of "Nemo").</p> <h3 id="python-2-x-3-x"><a href="#python-2-x-3-x" class="header-anchor">#</a> Python 2.x, 3.x</h3> <div class="language-py extra-class"><pre class="language-py"><code><span class="token operator">>></span><span class="token operator">></span> <span class="token keyword">from</span> itertools <span class="token keyword">import</span> chain
<span class="token operator">>></span><span class="token operator">></span> <span class="token builtin">dict</span><span class="token punctuation">(</span>chain<span class="token punctuation">(</span>fish<span class="token punctuation">.</span>items<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> dog<span class="token punctuation">.</span>items<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
<span class="token punctuation">{</span><span class="token string">'hands'</span><span class="token punctuation">:</span> <span class="token string">'paws'</span><span class="token punctuation">,</span> <span class="token string">'color'</span><span class="token punctuation">:</span> <span class="token string">'red'</span><span class="token punctuation">,</span> <span class="token string">'name'</span><span class="token punctuation">:</span> <span class="token string">'Clifford'</span><span class="token punctuation">,</span> <span class="token string">'special'</span><span class="token punctuation">:</span> <span class="token string">'gills'</span><span class="token punctuation">}</span>
</code></pre></div><p>This uses the lattermost value, as with the <code>**</code>-based technique for merging ("Clifford" overrides "Nemo").</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token operator">>></span><span class="token operator">></span> fish<span class="token punctuation">.</span>update<span class="token punctuation">(</span>dog<span class="token punctuation">)</span>
<span class="token operator">>></span><span class="token operator">></span> fish
<span class="token punctuation">{</span><span class="token string">'color'</span><span class="token punctuation">:</span> <span class="token string">'red'</span><span class="token punctuation">,</span> <span class="token string">'hands'</span><span class="token punctuation">:</span> <span class="token string">'paws'</span><span class="token punctuation">,</span> <span class="token string">'name'</span><span class="token punctuation">:</span> <span class="token string">'Clifford'</span><span class="token punctuation">,</span> <span class="token string">'special'</span><span class="token punctuation">:</span> <span class="token string">'gills'</span><span class="token punctuation">}</span>
</code></pre></div><p><code>dict.update</code> uses the latter dict to overwrite the previous one.</p> <h2 id="accessing-values-of-a-dictionary"><a href="#accessing-values-of-a-dictionary" class="header-anchor">#</a> Accessing values of a dictionary</h2> <div class="language-py extra-class"><pre class="language-py"><code>dictionary <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">"Hello"</span><span class="token punctuation">:</span> <span class="token number">1234</span><span class="token punctuation">,</span> <span class="token string">"World"</span><span class="token punctuation">:</span> <span class="token number">5678</span><span class="token punctuation">}</span>
<span class="token keyword">print</span><span class="token punctuation">(</span>dictionary<span class="token punctuation">[</span><span class="token string">"Hello"</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
</code></pre></div><p>The above code will print <code>1234</code>.</p> <p>The string <code>"Hello"</code> in this example is called a <strong>key</strong>. It is used to lookup a value in the <code>dict</code> by placing the key in square brackets.</p> <p>The number <code>1234</code> is seen after the respective colon in the <code>dict</code> definition. This is called the <strong>value</strong> that <code>"Hello"</code> <strong>maps to</strong> in this <code>dict</code>.</p> <p>Looking up a value like this with a key that does not exist will raise a <code>KeyError</code> exception, halting execution if uncaught. If we want to access a value without risking a <code>KeyError</code>, we can use the <code>dictionary.get</code> method. By default if the key does not exist, the method will return <code>None</code>. We can pass it a second value to return instead of <code>None</code> in the event of a failed lookup.</p> <div class="language-py extra-class"><pre class="language-py"><code>w <span class="token operator">=</span> dictionary<span class="token punctuation">.</span>get<span class="token punctuation">(</span><span class="token string">"whatever"</span><span class="token punctuation">)</span>
x <span class="token operator">=</span> dictionary<span class="token punctuation">.</span>get<span class="token punctuation">(</span><span class="token string">"whatever"</span><span class="token punctuation">,</span> <span class="token string">"nuh-uh"</span><span class="token punctuation">)</span>
</code></pre></div><p>In this example <code>w</code> will get the value <code>None</code> and <code>x</code> will get the value <code>"nuh-uh"</code>.</p> <h2 id="accessing-keys-and-values"><a href="#accessing-keys-and-values" class="header-anchor">#</a> Accessing keys and values</h2> <p>When working with dictionaries, it's often necessary to access all the keys and values in the dictionary, either in a <code>for</code> loop, a list comprehension, or just as a plain list.</p> <p>Given a dictionary like:</p> <div class="language-py extra-class"><pre class="language-py"><code>mydict <span class="token operator">=</span> <span class="token punctuation">{</span>
<span class="token string">'a'</span><span class="token punctuation">:</span> <span class="token string">'1'</span><span class="token punctuation">,</span>
<span class="token string">'b'</span><span class="token punctuation">:</span> <span class="token string">'2'</span>
<span class="token punctuation">}</span>
</code></pre></div><p>You can get a list of keys using the <code>keys()</code> method:</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token keyword">print</span><span class="token punctuation">(</span>mydict<span class="token punctuation">.</span>keys<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
<span class="token comment"># Python2: ['a', 'b']</span>
<span class="token comment"># Python3: dict_keys(['b', 'a'])</span>
</code></pre></div><p>If instead you want a list of values, use the <code>values()</code> method:</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token keyword">print</span><span class="token punctuation">(</span>mydict<span class="token punctuation">.</span>values<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
<span class="token comment"># Python2: ['1', '2']</span>
<span class="token comment"># Python3: dict_values(['2', '1'])</span>
</code></pre></div><p>If you want to work with both the key and its corresponding value, you can use the <code>items()</code> method:</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token keyword">print</span><span class="token punctuation">(</span>mydict<span class="token punctuation">.</span>items<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
<span class="token comment"># Python2: [('a', '1'), ('b', '2')]</span>
<span class="token comment"># Python3: dict_items([('b', '2'), ('a', '1')])</span>
</code></pre></div><p><strong>NOTE:</strong> Because a <code>dict</code> is unsorted, <code>keys()</code>, <code>values()</code>, and <code>items()</code> have no sort order. Use <code>sort()</code>, <code>sorted()</code>, or an <code>OrderedDict</code> if you care about the order that these methods return.</p> <p><strong>Python 2/3 Difference:</strong> In Python 3, these methods return special iterable objects, not lists, and are the equivalent of the Python 2 <code>iterkeys()</code>, <code>itervalues()</code>, and <code>iteritems()</code> methods. These objects can be used like lists for the most part, though there are some differences. See <a href="https://www.python.org/dev/peps/pep-3106/" target="_blank" rel="noopener noreferrer">PEP 3106<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> for more details.</p> <h2 id="creating-an-ordered-dictionary"><a href="#creating-an-ordered-dictionary" class="header-anchor">#</a> Creating an ordered dictionary</h2> <p>You can create an ordered dictionary which will follow a determined order when iterating over the keys in the dictionary.</p> <p>Use <code>OrderedDict</code> from the
<code>collections</code> module. This will always return the dictionary elements in the original insertion order when iterated over.</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token keyword">from</span> collections <span class="token keyword">import</span> OrderedDict
d <span class="token operator">=</span> OrderedDict<span class="token punctuation">(</span><span class="token punctuation">)</span>
d<span class="token punctuation">[</span><span class="token string">'first'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">1</span>
d<span class="token punctuation">[</span><span class="token string">'second'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">2</span>
d<span class="token punctuation">[</span><span class="token string">'third'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">3</span>
d<span class="token punctuation">[</span><span class="token string">'last'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">4</span>
<span class="token comment"># Outputs "first 1", "second 2", "third 3", "last 4"</span>
<span class="token keyword">for</span> key <span class="token keyword">in</span> d<span class="token punctuation">:</span>
<span class="token keyword">print</span><span class="token punctuation">(</span>key<span class="token punctuation">,</span> d<span class="token punctuation">[</span>key<span class="token punctuation">]</span><span class="token punctuation">)</span>
</code></pre></div><h2 id="unpacking-dictionaries-using-the-operator"><a href="#unpacking-dictionaries-using-the-operator" class="header-anchor">#</a> Unpacking dictionaries using the ** operator</h2> <p>You can use the <code>**</code> keyword argument unpacking operator to deliver the key-value pairs in a dictionary into a function's arguments. A simplified example from the <a href="https://docs.python.org/3/tutorial/controlflow.html#unpacking-argument-lists" target="_blank" rel="noopener noreferrer">official documentation<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>:</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token operator">>></span><span class="token operator">></span>
<span class="token operator">>></span><span class="token operator">></span> <span class="token keyword">def</span> <span class="token function">parrot</span><span class="token punctuation">(</span>voltage<span class="token punctuation">,</span> state<span class="token punctuation">,</span> action<span class="token punctuation">)</span><span class="token punctuation">:</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"This parrot wouldn't"</span><span class="token punctuation">,</span> action<span class="token punctuation">,</span> end<span class="token operator">=</span><span class="token string">' '</span><span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"if you put"</span><span class="token punctuation">,</span> voltage<span class="token punctuation">,</span> <span class="token string">"volts through it."</span><span class="token punctuation">,</span> end<span class="token operator">=</span><span class="token string">' '</span><span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"E's"</span><span class="token punctuation">,</span> state<span class="token punctuation">,</span> <span class="token string">"!"</span><span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
<span class="token operator">>></span><span class="token operator">></span> d <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">"voltage"</span><span class="token punctuation">:</span> <span class="token string">"four million"</span><span class="token punctuation">,</span> <span class="token string">"state"</span><span class="token punctuation">:</span> <span class="token string">"bleedin' demised"</span><span class="token punctuation">,</span> <span class="token string">"action"</span><span class="token punctuation">:</span> <span class="token string">"VOOM"</span><span class="token punctuation">}</span>
<span class="token operator">>></span><span class="token operator">></span> parrot<span class="token punctuation">(</span><span class="token operator">**</span>d<span class="token punctuation">)</span>
This parrot wouldn<span class="token string">'t VOOM if you put four million volts through it. E'</span>s bleedin' demised !
</code></pre></div><p>As of Python 3.5 you can also use this syntax to merge an arbitrary number of <code>dict</code> objects.</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token operator">>></span><span class="token operator">></span> fish <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">'name'</span><span class="token punctuation">:</span> <span class="token string">"Nemo"</span><span class="token punctuation">,</span> <span class="token string">'hands'</span><span class="token punctuation">:</span> <span class="token string">"fins"</span><span class="token punctuation">,</span> <span class="token string">'special'</span><span class="token punctuation">:</span> <span class="token string">"gills"</span><span class="token punctuation">}</span>
<span class="token operator">>></span><span class="token operator">></span> dog <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">'name'</span><span class="token punctuation">:</span> <span class="token string">"Clifford"</span><span class="token punctuation">,</span> <span class="token string">'hands'</span><span class="token punctuation">:</span> <span class="token string">"paws"</span><span class="token punctuation">,</span> <span class="token string">'color'</span><span class="token punctuation">:</span> <span class="token string">"red"</span><span class="token punctuation">}</span>
<span class="token operator">>></span><span class="token operator">></span> fishdog <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token operator">**</span>fish<span class="token punctuation">,</span> <span class="token operator">**</span>dog<span class="token punctuation">}</span>
<span class="token operator">>></span><span class="token operator">></span> fishdog
<span class="token punctuation">{</span><span class="token string">'hands'</span><span class="token punctuation">:</span> <span class="token string">'paws'</span><span class="token punctuation">,</span> <span class="token string">'color'</span><span class="token punctuation">:</span> <span class="token string">'red'</span><span class="token punctuation">,</span> <span class="token string">'name'</span><span class="token punctuation">:</span> <span class="token string">'Clifford'</span><span class="token punctuation">,</span> <span class="token string">'special'</span><span class="token punctuation">:</span> <span class="token string">'gills'</span><span class="token punctuation">}</span>
</code></pre></div><p>As this example demonstrates, duplicate keys map to their lattermost value (for example "Clifford" overrides "Nemo").</p> <h2 id="creating-a-dictionary"><a href="#creating-a-dictionary" class="header-anchor">#</a> Creating a dictionary</h2> <p>Rules for creating a dictionary:</p> <ul><li>Every key must be <strong>unique</strong> (otherwise it will be overridden)</li> <li>Every key must be <strong>hashable</strong> (can use the <code>hash</code> function to hash it; otherwise <code>TypeError</code> will be thrown)</li> <li>There is no particular order for the keys.</li></ul> <div class="language-py extra-class"><pre class="language-py"><code><span class="token comment"># Creating and populating it with values</span>
stock <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">'eggs'</span><span class="token punctuation">:</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token string">'milk'</span><span class="token punctuation">:</span> <span class="token number">2</span><span class="token punctuation">}</span>
<span class="token comment"># Or creating an empty dictionary</span>
dictionary <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment"># And populating it after</span>
dictionary<span class="token punctuation">[</span><span class="token string">'eggs'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">5</span>
dictionary<span class="token punctuation">[</span><span class="token string">'milk'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">2</span>
<span class="token comment"># Values can also be lists</span>
mydict <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">'a'</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token string">'b'</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">'one'</span><span class="token punctuation">,</span> <span class="token string">'two'</span><span class="token punctuation">,</span> <span class="token string">'three'</span><span class="token punctuation">]</span><span class="token punctuation">}</span>
<span class="token comment"># Use list.append() method to add new elements to the values list</span>
mydict<span class="token punctuation">[</span><span class="token string">'a'</span><span class="token punctuation">]</span><span class="token punctuation">.</span>append<span class="token punctuation">(</span><span class="token number">4</span><span class="token punctuation">)</span> <span class="token comment"># => {'a': [1, 2, 3, 4], 'b': ['one', 'two', 'three']}</span>
mydict<span class="token punctuation">[</span><span class="token string">'b'</span><span class="token punctuation">]</span><span class="token punctuation">.</span>append<span class="token punctuation">(</span><span class="token string">'four'</span><span class="token punctuation">)</span> <span class="token comment"># => {'a': [1, 2, 3, 4], 'b': ['one', 'two', 'three', 'four']}</span>
<span class="token comment"># We can also create a dictionary using a list of two-items tuples</span>
iterable <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">(</span><span class="token string">'eggs'</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'milk'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">]</span>
dictionary <span class="token operator">=</span> <span class="token builtin">dict</span><span class="token punctuation">(</span>iterables<span class="token punctuation">)</span>
<span class="token comment"># Or using keyword argument:</span>
dictionary <span class="token operator">=</span> <span class="token builtin">dict</span><span class="token punctuation">(</span>eggs<span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">,</span> milk<span class="token operator">=</span><span class="token number">2</span><span class="token punctuation">)</span>
<span class="token comment"># Another way will be to use the dict.fromkeys:</span>
dictionary <span class="token operator">=</span> <span class="token builtin">dict</span><span class="token punctuation">.</span>fromkeys<span class="token punctuation">(</span><span class="token punctuation">(</span>milk<span class="token punctuation">,</span> eggs<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment"># => {'milk': None, 'eggs': None}</span>
dictionary <span class="token operator">=</span> <span class="token builtin">dict</span><span class="token punctuation">.</span>fromkeys<span class="token punctuation">(</span><span class="token punctuation">(</span>milk<span class="token punctuation">,</span> eggs<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment"># => {'milk': 2, 'eggs': 5}</span>
</code></pre></div><h2 id="the-dict-constructor"><a href="#the-dict-constructor" class="header-anchor">#</a> The dict() constructor</h2> <p>The <code>dict()</code> constructor can be used to create dictionaries from keyword arguments, or from a single iterable of key-value pairs, or from a single dictionary and keyword arguments.</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token builtin">dict</span><span class="token punctuation">(</span>a<span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">,</span> b<span class="token operator">=</span><span class="token number">2</span><span class="token punctuation">,</span> c<span class="token operator">=</span><span class="token number">3</span><span class="token punctuation">)</span> <span class="token comment"># {'a': 1, 'b': 2, 'c': 3}</span>
<span class="token builtin">dict</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token punctuation">(</span><span class="token string">'d'</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'e'</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token string">'f'</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token comment"># {'d': 4, 'e': 5, 'f': 6}</span>
<span class="token builtin">dict</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token punctuation">(</span><span class="token string">'a'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token punctuation">,</span> b<span class="token operator">=</span><span class="token number">2</span><span class="token punctuation">,</span> c<span class="token operator">=</span><span class="token number">3</span><span class="token punctuation">)</span> <span class="token comment"># {'a': 1, 'b': 2, 'c': 3}</span>
<span class="token builtin">dict</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token string">'a'</span> <span class="token punctuation">:</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">'b'</span> <span class="token punctuation">:</span> <span class="token number">2</span><span class="token punctuation">}</span><span class="token punctuation">,</span> c<span class="token operator">=</span><span class="token number">3</span><span class="token punctuation">)</span> <span class="token comment"># {'a': 1, 'b': 2, 'c': 3}</span>
</code></pre></div><h2 id="the-trailing-comma"><a href="#the-trailing-comma" class="header-anchor">#</a> The trailing comma</h2> <p>Like lists and tuples, you can include a trailing comma in your dictionary.</p> <div class="language-py extra-class"><pre class="language-py"><code>role <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">"By day"</span><span class="token punctuation">:</span> <span class="token string">"A typical programmer"</span><span class="token punctuation">,</span>
<span class="token string">"By night"</span><span class="token punctuation">:</span> <span class="token string">"Still a typical programmer"</span><span class="token punctuation">,</span> <span class="token punctuation">}</span>
</code></pre></div><p>PEP 8 dictates that you should leave a space between the trailing comma and the closing brace.</p> <h2 id="all-combinations-of-dictionary-values"><a href="#all-combinations-of-dictionary-values" class="header-anchor">#</a> All combinations of dictionary values</h2> <div class="language-py extra-class"><pre class="language-py"><code>options <span class="token operator">=</span> <span class="token punctuation">{</span>
<span class="token string">"x"</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">"a"</span><span class="token punctuation">,</span> <span class="token string">"b"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token string">"y"</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">]</span>
<span class="token punctuation">}</span>
</code></pre></div><p>Given a dictionary such as the one shown above, where there is a list
representing a set of values to explore for the corresponding key. Suppose
you want to explore <code>"x"="a"</code> with <code>"y"=10</code>, then <code>"x"="a"</code> with<code>"y"=10</code>, and so
on until you have explored all possible combinations.</p> <p>You can create a list that returns all such combinations of values using the following code.</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token keyword">import</span> itertools
options <span class="token operator">=</span> <span class="token punctuation">{</span>
<span class="token string">"x"</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">"a"</span><span class="token punctuation">,</span> <span class="token string">"b"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token string">"y"</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">]</span><span class="token punctuation">}</span>
keys <span class="token operator">=</span> options<span class="token punctuation">.</span>keys<span class="token punctuation">(</span><span class="token punctuation">)</span>
values <span class="token operator">=</span> <span class="token punctuation">(</span>options<span class="token punctuation">[</span>key<span class="token punctuation">]</span> <span class="token keyword">for</span> key <span class="token keyword">in</span> keys<span class="token punctuation">)</span>
combinations <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token builtin">dict</span><span class="token punctuation">(</span><span class="token builtin">zip</span><span class="token punctuation">(</span>keys<span class="token punctuation">,</span> combination<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">for</span> combination <span class="token keyword">in</span> itertools<span class="token punctuation">.</span>product<span class="token punctuation">(</span><span class="token operator">*</span>values<span class="token punctuation">)</span><span class="token punctuation">]</span>
<span class="token keyword">print</span> combinations
</code></pre></div><p>This gives us the following list stored in the variable <code>combinations</code>:</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token punctuation">[</span><span class="token punctuation">{</span><span class="token string">'x'</span><span class="token punctuation">:</span> <span class="token string">'a'</span><span class="token punctuation">,</span> <span class="token string">'y'</span><span class="token punctuation">:</span> <span class="token number">10</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">{</span><span class="token string">'x'</span><span class="token punctuation">:</span> <span class="token string">'b'</span><span class="token punctuation">,</span> <span class="token string">'y'</span><span class="token punctuation">:</span> <span class="token number">10</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">{</span><span class="token string">'x'</span><span class="token punctuation">:</span> <span class="token string">'a'</span><span class="token punctuation">,</span> <span class="token string">'y'</span><span class="token punctuation">:</span> <span class="token number">20</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">{</span><span class="token string">'x'</span><span class="token punctuation">:</span> <span class="token string">'b'</span><span class="token punctuation">,</span> <span class="token string">'y'</span><span class="token punctuation">:</span> <span class="token number">20</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">{</span><span class="token string">'x'</span><span class="token punctuation">:</span> <span class="token string">'a'</span><span class="token punctuation">,</span> <span class="token string">'y'</span><span class="token punctuation">:</span> <span class="token number">30</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">{</span><span class="token string">'x'</span><span class="token punctuation">:</span> <span class="token string">'b'</span><span class="token punctuation">,</span> <span class="token string">'y'</span><span class="token punctuation">:</span> <span class="token number">30</span><span class="token punctuation">}</span><span class="token punctuation">]</span>
</code></pre></div><h2 id="dictionaries-example"><a href="#dictionaries-example" class="header-anchor">#</a> Dictionaries Example</h2> <p>Dictionaries map keys to values.</p> <div class="language-py extra-class"><pre class="language-py"><code>car <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
car<span class="token punctuation">[</span><span class="token string">"wheels"</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">4</span>
car<span class="token punctuation">[</span><span class="token string">"color"</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token string">"Red"</span>
car<span class="token punctuation">[</span><span class="token string">"model"</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token string">"Corvette"</span>
</code></pre></div><p>Dictionary values can be accessed by their keys.</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token keyword">print</span> <span class="token string">"Little "</span> <span class="token operator">+</span> car<span class="token punctuation">[</span><span class="token string">"color"</span><span class="token punctuation">]</span> <span class="token operator">+</span> <span class="token string">" "</span> <span class="token operator">+</span> car<span class="token punctuation">[</span><span class="token string">"model"</span><span class="token punctuation">]</span> <span class="token operator">+</span> <span class="token string">"!"</span>
<span class="token comment"># This would print out "Little Red Corvette!" </span>
</code></pre></div><p>Dictionaries can also be created in a JSON style:</p> <div class="language-py extra-class"><pre class="language-py"><code>car <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">"wheels"</span><span class="token punctuation">:</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token string">"color"</span><span class="token punctuation">:</span> <span class="token string">"Red"</span><span class="token punctuation">,</span> <span class="token string">"model"</span><span class="token punctuation">:</span> <span class="token string">"Corvette"</span><span class="token punctuation">}</span>
</code></pre></div><p>Dictionary values can be iterated over:</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token keyword">for</span> key <span class="token keyword">in</span> car<span class="token punctuation">:</span>
<span class="token keyword">print</span> key <span class="token operator">+</span> <span class="token string">": "</span> <span class="token operator">+</span> car<span class="token punctuation">[</span>key<span class="token punctuation">]</span>
<span class="token comment"># wheels: 4</span>
<span class="token comment"># color: Red</span>
<span class="token comment"># model: Corvette</span>
</code></pre></div><h4 id="syntax"><a href="#syntax" class="header-anchor">#</a> Syntax</h4> <ul><li>mydict = {}</li> <li>mydict[k] = value</li> <li>value = mydict[k]</li> <li>value = mydict.get(k)</li> <li>value = mydict.get(k, "default_value")</li></ul> <h4 id="parameters"><a href="#parameters" class="header-anchor">#</a> Parameters</h4> <table><thead><tr><th>Parameter</th> <th>Details</th></tr></thead> <tbody><tr><td>key</td> <td>The desired key to lookup</td></tr> <tr><td>value</td> <td>The value to set or return</td></tr></tbody></table> <h4 id="remarks"><a href="#remarks" class="header-anchor">#</a> Remarks</h4> <p>Helpful items to remember when creating a dictionary:</p> <ul><li>Every key must be <strong>unique</strong> (otherwise it will be overridden)</li> <li>Every key must be <strong>hashable</strong> (can use the <code>hash</code> function to hash it; otherwise <code>TypeError</code> will be thrown)</li> <li>There is no particular order for the keys.</li></ul></div> <footer class="page-edit"><div class="edit-link"><a href="https://github.com/devtut/generate/edit/master/docs/python/dictionary.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a> <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></div> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
←
<a href="/python/multidimensional-arrays.html" class="prev">
Multidimensional arrays
</a></span> <span class="next"><a href="/python/list.html">
List
</a>
→
</span></p></div> </main></div><div class="global-ui"><!----></div></div>
<script src="/assets/js/app.1779e102.js" defer></script><script src="/assets/js/3.2cfa8016.js" defer></script><script src="/assets/js/2696.1221c46d.js" defer></script>
</body>
</html>