Skip to content

Commit 92cd4ae

Browse files
committed
add tasks
1 parent f40a100 commit 92cd4ae

19 files changed

+3053
-15
lines changed
Lines changed: 197 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,201 @@
11
{
2-
"cells": [],
3-
"metadata": {},
2+
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"metadata": {},
6+
"source": [
7+
"# Defaultdict and namedtuple\n",
8+
"\n",
9+
"Reference notebook for the second task of the *Python Tricks and Hacks for Productivity* course on Coursera.\n",
10+
"\n",
11+
"**Instructor**: *Danilo Lessa Bernardineli ([email protected])*"
12+
]
13+
},
14+
{
15+
"cell_type": "markdown",
16+
"metadata": {},
17+
"source": [
18+
"## Put deposits into the account balances"
19+
]
20+
},
21+
{
22+
"cell_type": "code",
23+
"execution_count": 1,
24+
"metadata": {},
25+
"outputs": [],
26+
"source": [
27+
"account_balances = {'Jonathan': 5.49,\n",
28+
" 'Markus': 1.39}\n",
29+
"\n",
30+
"deposits = {'Jonathan': 0.49,\n",
31+
" 'Markus': 0.39}\n",
32+
"\n",
33+
"for account, deposit in deposits.items():\n",
34+
" account_balances[account] += deposit\n",
35+
"print(account_balances)"
36+
]
37+
},
38+
{
39+
"cell_type": "code",
40+
"execution_count": 2,
41+
"metadata": {},
42+
"outputs": [
43+
{
44+
"ename": "KeyError",
45+
"evalue": "'Jonathan'",
46+
"output_type": "error",
47+
"traceback": [
48+
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
49+
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
50+
"\u001b[0;32m<ipython-input-2-f5ff5002477b>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0maccount\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdeposit\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mdeposits\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0maccount_balances\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0maccount\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0mdeposit\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maccount_balances\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
51+
"\u001b[0;31mKeyError\u001b[0m: 'Jonathan'"
52+
]
53+
}
54+
],
55+
"source": [
56+
"account_balances = {}\n",
57+
"\n",
58+
"deposits = {'Jonathan': 0.49,\n",
59+
" 'Markus': 0.39,\n",
60+
" 'Jamsheed': 100.00}\n",
61+
"\n",
62+
"\n",
63+
"for account, deposit in deposits.items():\n",
64+
" account_balances[account] += deposit\n",
65+
"print(account_balances)"
66+
]
67+
},
68+
{
69+
"cell_type": "code",
70+
"execution_count": null,
71+
"metadata": {},
72+
"outputs": [],
73+
"source": [
74+
"account_balances = {}\n",
75+
"\n",
76+
"deposits = {'Jonathan': 0.49,\n",
77+
" 'Markus': 0.39,\n",
78+
" 'Jamsheed': 100.00}\n",
79+
"\n",
80+
"for account, deposit in deposits.items():\n",
81+
" if account not in account_balances:\n",
82+
" account_balances[account] = 0.0\n",
83+
" account_balances[account] += deposit\n",
84+
"print(account_balances)"
85+
]
86+
},
87+
{
88+
"cell_type": "code",
89+
"execution_count": null,
90+
"metadata": {},
91+
"outputs": [],
92+
"source": [
93+
"from collections import defaultdict\n",
94+
"\n",
95+
"account_balances = defaultdict(lambda: 15)\n",
96+
"\n",
97+
"deposits = {'Jonathan': 0.49,\n",
98+
" 'Markus': 0.39,\n",
99+
" 'Jamsheed': 100.00}\n",
100+
"\n",
101+
"for account, deposit in deposits.items():\n",
102+
" account_balances[account] += deposit\n",
103+
"print(dict(account_balances))"
104+
]
105+
},
106+
{
107+
"cell_type": "code",
108+
"execution_count": null,
109+
"metadata": {},
110+
"outputs": [],
111+
"source": [
112+
"from typing import NamedTuple\n",
113+
"\n",
114+
"class Deposit(NamedTuple):\n",
115+
" receiver: str\n",
116+
" value: float\n",
117+
" \n",
118+
"Deposit(receiver='Markus', value=5.49)"
119+
]
120+
},
121+
{
122+
"cell_type": "code",
123+
"execution_count": null,
124+
"metadata": {},
125+
"outputs": [],
126+
"source": [
127+
"Deposit(sender='Anderson', value=4.99)"
128+
]
129+
},
130+
{
131+
"cell_type": "code",
132+
"execution_count": null,
133+
"metadata": {},
134+
"outputs": [],
135+
"source": [
136+
"from typing import NamedTuple\n",
137+
"\n",
138+
"class Deposit(NamedTuple):\n",
139+
" receiver: str\n",
140+
" value: float\n",
141+
"\n",
142+
"account_balances = defaultdict(lambda: 15)\n",
143+
"\n",
144+
"deposits = [Deposit(receiver='Markus', value=5.49),\n",
145+
" Deposit(receiver='Jonathan', value=15.49),\n",
146+
" Deposit(receiver='Jamsheed', value=25.49)]\n",
147+
"\n",
148+
"for deposit in deposits:\n",
149+
" account_balances[deposit.receiver] += deposit.value\n",
150+
"print(dict(account_balances))"
151+
]
152+
},
153+
{
154+
"cell_type": "code",
155+
"execution_count": null,
156+
"metadata": {},
157+
"outputs": [],
158+
"source": [
159+
"account_balances = {}\n",
160+
"\n",
161+
"deposits = {'Jonathan': 0.49,\n",
162+
" 'Markus': 0.39,\n",
163+
" 'Jamsheed': 100.00}\n",
164+
"\n",
165+
"for account, deposit in deposits.items():\n",
166+
" if account not in account_balances:\n",
167+
" account_balances[account] = 0.0\n",
168+
" account_balances[account] += deposit\n",
169+
"print(account_balances)"
170+
]
171+
},
172+
{
173+
"cell_type": "code",
174+
"execution_count": null,
175+
"metadata": {},
176+
"outputs": [],
177+
"source": []
178+
}
179+
],
180+
"metadata": {
181+
"kernelspec": {
182+
"display_name": "Python 3",
183+
"language": "python",
184+
"name": "python3"
185+
},
186+
"language_info": {
187+
"codemirror_mode": {
188+
"name": "ipython",
189+
"version": 3
190+
},
191+
"file_extension": ".py",
192+
"mimetype": "text/x-python",
193+
"name": "python",
194+
"nbconvert_exporter": "python",
195+
"pygments_lexer": "ipython3",
196+
"version": "3.7.6"
197+
}
198+
},
4199
"nbformat": 4,
5200
"nbformat_minor": 4
6201
}

0 commit comments

Comments
 (0)