1
00:00:05,340 --> 00:00:09,090
So in the previous video, we started
talking about Python dictionaries.

2
00:00:09,090 --> 00:00:12,390
So let's continue on and look at
some other features of dictionaries.

3
00:00:12,390 --> 00:00:14,660
Now, on the screen,
I've got the code from the last video.

4
00:00:14,660 --> 00:00:18,580
And you saw that we used the .get
to retrieve the dictionary.

5
00:00:18,580 --> 00:00:22,770
And we actually use the in key word
to actually test to see whether our.

6
00:00:22,770 --> 00:00:26,310
A key that we'll actually type
was actually in the dictionary.

7
00:00:26,310 --> 00:00:27,860
So what I'm gonna do is
just comment this code out,

8
00:00:27,860 --> 00:00:30,520
cuz I wanted to show you something else
that I didn't do in the previous video.

9
00:00:31,930 --> 00:00:32,520
Comment that out.

10
00:00:34,210 --> 00:00:37,060
And what I'm going to do here is
just show you an alternative way.

11
00:00:37,060 --> 00:00:41,600
In the previous video, we talked about,
showed you how to type description.

12
00:00:41,600 --> 00:00:47,390
Equals fruit.get [INAUDIBLE] and
you can see that on the screen there.

13
00:00:47,390 --> 00:00:51,240
But you can also add a default value
to return if a key doesn't exist.

14
00:00:51,240 --> 00:00:52,080
So we can do this.

15
00:00:54,460 --> 00:01:00,930
We don't have a [INAUDIBLE]
key like so

16
00:01:00,930 --> 00:01:02,440
And we'll do a print description.

17
00:01:05,890 --> 00:01:07,800
And I'll just comment
these last two lines out,

18
00:01:07,800 --> 00:01:10,620
cuz they're part of the else
that I commented out.

19
00:01:10,620 --> 00:01:13,550
So now if I run that, enter a fruit.

20
00:01:14,980 --> 00:01:17,230
Apple, good for making cider.

21
00:01:17,230 --> 00:01:22,330
Lemon, If I type something like a peach,
we don't have a peach.

22
00:01:22,330 --> 00:01:23,930
So you can see what's happening there.

23
00:01:23,930 --> 00:01:25,120
I'll just move this over.

24
00:01:27,310 --> 00:01:28,090
So if what we've typed,

25
00:01:28,090 --> 00:01:33,570
which is stored in the dict_key
variable does exist in our dictionary.

26
00:01:33,570 --> 00:01:37,250
It's going to print that out on
line 13 This is the default value.

27
00:01:37,250 --> 00:01:40,670
We don't have A plus whatever
was typed if it doesn't exist.

28
00:01:40,670 --> 00:01:45,390
So you can see there's two different
ways of really achieving the same thing.

29
00:01:45,390 --> 00:01:48,570
Well I guess the question you're probably
asking about now is which one one should

30
00:01:48,570 --> 00:01:50,650
you use, and
before actually getting into day time and

31
00:01:50,650 --> 00:01:53,780
answering that it's worth pointing
out that the second example,

32
00:01:53,780 --> 00:01:57,090
the one that I've now commented out And
that was really a little bit contrived

33
00:01:57,090 --> 00:01:59,550
in order to produce the same
result as the first one.

34
00:01:59,550 --> 00:02:01,590
So in this particular case,
for what we're doing here,

35
00:02:01,590 --> 00:02:04,450
it probably makes sense to do what
I've got on the screen now and

36
00:02:04,450 --> 00:02:07,920
just use the default value, because
we're not actually doing anything with

37
00:02:07,920 --> 00:02:10,820
that dictionary key that we're typing in,
other than printing it out.

38
00:02:10,820 --> 00:02:13,840
But if you're gonna test
the return value of description

39
00:02:13,840 --> 00:02:17,020
to see if it contained the default and
use that to take some action.

40
00:02:17,020 --> 00:02:19,350
You know if the key doesn't
exist in other words and

41
00:02:19,350 --> 00:02:22,370
you probably be better
off using the in keyword.

42
00:02:22,370 --> 00:02:24,410
Using the sudden method
that is coming to that.

43
00:02:24,410 --> 00:02:27,330
And checking that you key's in the
dictionary first, so it really depends on

44
00:02:27,330 --> 00:02:30,210
the functionality you're implementing
as to which method you'd use.

45
00:02:30,210 --> 00:02:34,730
The other thing to point out is there
actually is a has_key method that used,

46
00:02:34,730 --> 00:02:37,290
that can be used to check
if it's in the dictionary,

47
00:02:37,290 --> 00:02:44,640
so you can do something like this.

48
00:02:44,640 --> 00:02:47,160
Fruit.has_key and
dict_key for argument's sake.

49
00:02:49,290 --> 00:02:54,160
But has_key is a Python 2 method, and
it's not implemented in Python 3, so

50
00:02:54,160 --> 00:02:55,890
it's actually deprecated.

51
00:02:55,890 --> 00:02:56,730
That's why you saw me,

52
00:02:56,730 --> 00:03:01,140
when I was typing has_key, IntelliSense
wasn't coming up and using that.

53
00:03:01,140 --> 00:03:04,180
So if you happen to See, has_key.

54
00:03:04,180 --> 00:03:08,050
In any old Python code, you can
replace that with this code in here.

55
00:03:08,050 --> 00:03:12,020
So fruit.has_key can be
equivalent to dict_key in fruit.

56
00:03:12,020 --> 00:03:15,040
That would be the Python 3 syntax
you'd want to use instead.

57
00:03:15,040 --> 00:03:16,490
So I'm just going to
comment this out again.

58
00:03:16,490 --> 00:03:21,390
Go back to the original changes that
we had before the start of the video.

59
00:03:21,390 --> 00:03:22,180
Like so.

60
00:03:22,180 --> 00:03:22,880
So moving on now.

61
00:03:22,880 --> 00:03:26,430
It's probably not going to surprise you to
learn you can also iterate over the keys

62
00:03:26,430 --> 00:03:31,260
of a dictionary in the usual authentic
way, so we could do something like this.

63
00:03:31,260 --> 00:03:37,660
And you've used I'd say the for keyword
quite a few times, for snack in fruit.

64
00:03:37,660 --> 00:03:43,890
Print fruit snack.

65
00:03:43,890 --> 00:03:44,920
So we could do that.

66
00:03:44,920 --> 00:03:50,380
What we'll do is we'll just comment
this whole [INAUDIBLE] we put now.

67
00:03:50,380 --> 00:03:52,940
On the program again, and
you can see we've got through, and

68
00:03:52,940 --> 00:03:56,660
it's actually listed out all
the values automatically for us.

69
00:03:59,330 --> 00:04:02,100
And we can also access
the values as an iterable.

70
00:04:02,100 --> 00:04:05,700
And I'm not sure whether you've noticed,
but every time we run this, if we run this

71
00:04:05,700 --> 00:04:10,750
again, noticing the output that's coming
through in here, it's changing each time.

72
00:04:10,750 --> 00:04:14,900
The actual order itself
is changing each time.

73
00:04:17,779 --> 00:04:20,680
You see that?
So the point we're making here.

74
00:04:20,680 --> 00:04:24,960
There's no guarantee that the list is
always going to appear in the same

75
00:04:24,960 --> 00:04:25,860
order in a dictionary.

76
00:04:25,860 --> 00:04:26,770
In other words,

77
00:04:26,770 --> 00:04:29,600
just because we enter orange first
when we created the dictionary.

78
00:04:29,600 --> 00:04:31,310
In this case we used apple,

79
00:04:31,310 --> 00:04:35,250
doesn't mean it's going to be the first
item in the list so to speak.

80
00:04:35,250 --> 00:04:39,190
So the key is hashed and you may find
dictionaries refer Refered to as hashes,

81
00:04:39,190 --> 00:04:43,040
and we'll be looking at hash
functions later in the course.

82
00:04:43,040 --> 00:04:45,370
But they're basically a one way function.

83
00:04:45,370 --> 00:04:50,600
So, if we use the same hash function on
the key apple you always get the same has,

84
00:04:50,600 --> 00:04:54,130
but trying to work out what key
was used to produce that has

85
00:04:54,130 --> 00:04:56,230
can take a powerful computer months.

86
00:04:56,230 --> 00:05:00,830
So, hash functions are used for example
in cryptography and calculating sums.

87
00:05:00,830 --> 00:05:02,230
You may have done this before.

88
00:05:02,230 --> 00:05:05,040
If you've downloaded files from
a reputable source on the internet,

89
00:05:05,040 --> 00:05:08,390
you may have seen MD5 check
sum's being referenced.

90
00:05:08,390 --> 00:05:10,960
They're use to check that the file
hasn't been tampered with in any way.

91
00:05:10,960 --> 00:05:15,760
In other words, the file that they've
created is Is got a unique MD5 checksum.

92
00:05:15,760 --> 00:05:18,610
And they then show you that MD5 checksum.

93
00:05:18,610 --> 00:05:22,860
So when you download on your computer
you can actually product that same MD5

94
00:05:22,860 --> 00:05:26,090
checksum by running a command to guarantee
that the file hasn't been modified.

95
00:05:26,090 --> 00:05:29,200
A hash would also have a use to
store password in the database.

96
00:05:29,200 --> 00:05:32,100
You wouldn't store a password for
example as plaintext.

97
00:05:32,100 --> 00:05:35,460
You'd use a hash which could
be really useful as well.

98
00:05:35,460 --> 00:05:39,480
So it can be helpful to think of a
dictionary as being created with a load of

99
00:05:39,480 --> 00:05:43,750
free slots, and in to those slots our
data actually goes, is actually stored.

100
00:05:43,750 --> 00:05:45,580
Now the key is hashed and

101
00:05:45,580 --> 00:05:49,480
the hashed spelling is used
to determine which Is used.

102
00:05:49,480 --> 00:05:52,210
Because we're creating the dictionary
every time we run the program in

103
00:05:52,210 --> 00:05:53,110
this case.

104
00:05:53,110 --> 00:05:55,940
The slots are allocating different or
allocated differently.

105
00:05:55,940 --> 00:05:58,270
So that the algorithms
are in different orders.

106
00:05:58,270 --> 00:06:01,350
So Python doesn't randomly
move things around though.

107
00:06:01,350 --> 00:06:03,650
As you can see from this next example.

108
00:06:03,650 --> 00:06:05,750
We're going to print this
out a number of times.

109
00:06:06,840 --> 00:06:09,890
So let's just leave all that out,
just leave the print in there.

110
00:06:09,890 --> 00:06:16,840
So we're doing something like for
i in range 10, for snack in food.

111
00:06:16,840 --> 00:06:18,640
You can probably guess
what we're doing here.

112
00:06:18,640 --> 00:06:21,450
We're going to run the example
ten times now just to see

113
00:06:21,450 --> 00:06:26,410
whether we get a different add value or
value From the dictionary, print, snack

114
00:06:27,930 --> 00:06:32,680
plus is, plus fruit snack, and

115
00:06:35,210 --> 00:06:40,450
we're just going to print a separator
between each iteration, times 40.

116
00:06:40,450 --> 00:06:45,630
So now, if you run that,
You'll notice that in this case,

117
00:06:45,630 --> 00:06:46,700
they're now the same each time.

118
00:06:46,700 --> 00:06:50,290
So each time you're going through the list
while we're running it, it's identical for

119
00:06:50,290 --> 00:06:54,090
the 10 times that we've gone
through this full loop.

120
00:06:54,090 --> 00:06:56,840
And going through a dictionary,
we got the same results.

121
00:06:56,840 --> 00:06:59,400
19 of orange, apple, grape, lime, lemon,

122
00:06:59,400 --> 00:07:04,110
if we run that program again We get lime,
lemon, orange, apple, grape this time.

123
00:07:04,110 --> 00:07:05,120
So in other words,

124
00:07:05,120 --> 00:07:11,210
it's the time in the dictionary is created
that those start to arbitrarily created,

125
00:07:11,210 --> 00:07:15,310
and the [INAUDIBLE] is sort of putting
that in a particular area of memory.

126
00:07:15,310 --> 00:07:20,980
So it's going to be the same for that run,
for that program run as you saw Now,

127
00:07:20,980 --> 00:07:24,400
that will only be the case
until we modify the dictionary.

128
00:07:24,400 --> 00:07:27,590
So if we ever delete items,
anything can happen to the ordering.

129
00:07:27,590 --> 00:07:29,010
So it's not really
something you can rely on.

130
00:07:29,010 --> 00:07:33,500
You kind of assume that adding a
particular item is going to then make that

131
00:07:33,500 --> 00:07:36,640
item appear in a certain place
when you're printing it out or

132
00:07:36,640 --> 00:07:38,120
when you're through that list.

133
00:07:38,120 --> 00:07:40,970
Now there's an ordered dictionary in the
collections library which we'll be looking

134
00:07:40,970 --> 00:07:42,740
at later, if you need to do such a thing.

135
00:07:42,740 --> 00:07:46,120
If you do actually want to have
a particular order or to use things

136
00:07:46,120 --> 00:07:49,680
a dictionary in an ordered manner,
but by default this isn't included.

137
00:07:49,680 --> 00:07:52,640
We'll be looking at that when we cover
path and library later in the course.

138
00:07:52,640 --> 00:07:55,330
Keep in mind if you do use that
performance would not be as good because

139
00:07:55,330 --> 00:07:59,530
there's more work for Python to actually
do to keep things in a orderly fashion.

140
00:07:59,530 --> 00:08:04,080
Now one reason ordering may be important
It would be coming to display results for

141
00:08:04,080 --> 00:08:05,070
a human to read.

142
00:08:05,070 --> 00:08:07,920
So in that case rather than loosing
performance while you're adding and

143
00:08:07,920 --> 00:08:10,710
deleting from the dictionary it
probably could make sense, and

144
00:08:10,710 --> 00:08:13,500
probably would depending on
the application to not be concerned with

145
00:08:13,500 --> 00:08:15,810
the ordering until the time
comes to display the data.

146
00:08:15,810 --> 00:08:17,810
So in other words you don't try and

147
00:08:17,810 --> 00:08:21,090
do any ordering while
the dictionary is being created.

148
00:08:21,090 --> 00:08:24,570
The only time you order it would be at the
stage where you want to print it out or

149
00:08:24,570 --> 00:08:26,580
process it in that particular order.

150
00:08:26,580 --> 00:08:29,750
So what we could do at that point is
create a list from the dictionary keys,

151
00:08:29,750 --> 00:08:33,360
sort the list, and iterate over
the list to display the results.

152
00:08:33,360 --> 00:08:35,429
Now that sounds like a lot of steps, but

153
00:08:35,429 --> 00:08:38,760
this is it's really simple
to do as we see here.

154
00:08:38,760 --> 00:08:41,350
So let's go through and
see just how easy those steps are.

155
00:08:41,350 --> 00:08:43,750
So we're gonna start with our order keys.

156
00:08:43,750 --> 00:08:48,450
So order [INAUDIBLE] keys
equals list [INAUDIBLE] .keys.

157
00:08:49,830 --> 00:08:51,590
Then we're going to sort them.

158
00:08:51,590 --> 00:08:55,140
So we've got the list of keys first from
the dictionary then we're going to do

159
00:08:55,140 --> 00:09:01,730
keys.sort and
we're going to do [INAUDIBLE]

160
00:09:01,730 --> 00:09:05,750
in ordered keys directly that's with
the ordered key in ordered keys.

161
00:09:09,290 --> 00:09:15,270
Print.
If as fruit.

162
00:09:15,270 --> 00:09:16,940
If like so.

163
00:09:16,940 --> 00:09:18,640
So if you run that.

164
00:09:20,090 --> 00:09:21,580
We've now got them in the same order.

165
00:09:21,580 --> 00:09:24,860
And every time we run the program we
should get the same result as you can

166
00:09:24,860 --> 00:09:27,600
see in the screen there because we
are specifically going through that sort

167
00:09:27,600 --> 00:09:28,350
process.

168
00:09:28,350 --> 00:09:33,060
So fruit.keys that returns a list of
all the keys just to confirm that.

169
00:09:33,060 --> 00:09:35,240
It's not really the type or
kind of list that we're used to.

170
00:09:35,240 --> 00:09:37,390
And as such,
it doesn't have a sort command.

171
00:09:37,390 --> 00:09:39,280
So, that's why we had
to use the list method.

172
00:09:39,280 --> 00:09:41,110
To create that list.

173
00:09:41,110 --> 00:09:43,410
Because it takes a sequence and
produces a list from it.

174
00:09:43,410 --> 00:09:47,380
So, at that point, we've then got a list
that we're storing in order_keys.

175
00:09:47,380 --> 00:09:49,150
Then we're using the standard .sort.

176
00:09:49,150 --> 00:09:50,900
Which we've seen before.

177
00:09:50,900 --> 00:09:55,330
And then finally, we're iterating through
the list of then ordered keys and

178
00:09:55,330 --> 00:09:57,700
printing out the corresponding
entry in the dictionary.

179
00:09:57,700 --> 00:10:00,010
To print it out in alphabetical order.

180
00:10:00,010 --> 00:10:03,260
Now the code's been written on
the screen to show what's going on but

181
00:10:03,260 --> 00:10:06,840
you'd normally find that the list
is sorted as it's created.

182
00:10:06,840 --> 00:10:09,420
And that can save you one line of code.

183
00:10:09,420 --> 00:10:13,630
So you could have actually
done these two lines out.

184
00:10:14,720 --> 00:10:19,450
Just so they're in there for reverence
we do ordered underscore keys equals

185
00:10:19,450 --> 00:10:24,300
sorted List(fruit.keys)),

186
00:10:24,300 --> 00:10:29,350
which will achieve the equivalent thing,
but with one less line of code.

187
00:10:29,350 --> 00:10:31,770
As you can see,
it's still sorting things alphabetically.

188
00:10:31,770 --> 00:10:35,170
If you're not sure why we used the sort
method in the first example, But

189
00:10:35,170 --> 00:10:37,690
had to call this sorted
function in a second.

190
00:10:37,690 --> 00:10:41,750
Go back and check out section seven,
introduction to lists,

191
00:10:41,750 --> 00:10:43,390
where we go through that in detail.

192
00:10:43,390 --> 00:10:48,030
Moving on, finally we can simplify that
even further if we don't need the list

193
00:10:48,030 --> 00:10:50,630
object from anything else, other than
to iterate [INAUDIBLE] in other words,

194
00:10:50,630 --> 00:10:54,100
if you just Printing something out and
you're not going to be using this variable

195
00:10:54,100 --> 00:11:00,210
ordered keys after, you can do that all in
one line, so we can, again we'll that out.

196
00:11:02,110 --> 00:11:05,270
Making it something like for f in sorted

197
00:11:07,740 --> 00:11:15,610
fruit.keys print(f + "- " + fruit[f]).

198
00:11:15,610 --> 00:11:19,780
Too many brackets there.

199
00:11:19,780 --> 00:11:24,010
All right, so if we run that,
then again we get the same result.

200
00:11:24,010 --> 00:11:27,090
So you can see we become
quite concise in Python

201
00:11:27,090 --> 00:11:32,030
really depending in this case whether
we're using that variable ordered_keys.

202
00:11:32,030 --> 00:11:33,060
At any other point in the program.

203
00:11:33,060 --> 00:11:37,750
If you want, you can see it
became really quite intuitive and

204
00:11:37,750 --> 00:11:39,400
very fast to do what we want it to do.

205
00:11:39,400 --> 00:11:42,130
And really any two lines of
code including the printout.

206
00:11:42,130 --> 00:11:45,790
So, just to confirm fruit.keys
doesn't return a regular list.

207
00:11:45,790 --> 00:11:49,280
In this case, using the sorter function,
it does behave like a sequence.

208
00:11:49,280 --> 00:11:51,930
And as such, we can then pass
it to the sorter function.

209
00:11:51,930 --> 00:11:54,550
Because that as input wants a sequence and

210
00:11:54,550 --> 00:11:57,460
that's why that's actually working and
that also explains why we had to

211
00:11:57,460 --> 00:12:02,580
create a list from this fruit dot keys
output in the first two examples.

212
00:12:02,580 --> 00:12:05,790
And finally, if you wanted to write
Over the keys in a dictionary.

213
00:12:05,790 --> 00:12:08,350
You don't actually need
to use the keys with it.

214
00:12:08,350 --> 00:12:11,840
We're using it here because we want to
sort the keys first before we process it

215
00:12:11,840 --> 00:12:12,830
any further.

216
00:12:12,830 --> 00:12:14,020
So, if you're not sorting.

217
00:12:14,020 --> 00:12:17,310
Basically, that line
there will be done with.

218
00:12:18,930 --> 00:12:21,670
Our for f in fruit.

219
00:12:21,670 --> 00:12:22,660
We can assign apple.

220
00:12:24,450 --> 00:12:27,230
And you can now that's now not
sorted in alphabetical order

221
00:12:27,230 --> 00:12:28,770
because we've removed the sorted command.

222
00:12:28,770 --> 00:12:31,370
So that's, again, why we've added that.

223
00:12:31,370 --> 00:12:34,310
The .keys need it if we're gonna
be using the sort order function

224
00:12:34,310 --> 00:12:36,850
we need to make sure that we use
.keys to return a sequence so

225
00:12:36,850 --> 00:12:38,690
that can then sort it
into the correct order.

226
00:12:38,690 --> 00:12:42,660
Now, we looked at the keys method to
obtain a list of the dictionary keys as

227
00:12:42,660 --> 00:12:44,880
you can see there on screen.

228
00:12:44,880 --> 00:12:48,430
You can probably guess that we can get
a list of values by using, you guessed it.

229
00:12:48,430 --> 00:12:49,270
The values command.

230
00:12:49,270 --> 00:12:53,130
So we can do something like, again.

231
00:12:54,420 --> 00:12:57,820
For val in fruit.values.

232
00:12:57,820 --> 00:12:59,890
That's right.

233
00:12:59,890 --> 00:13:01,840
Print val, we can run that.

234
00:13:03,680 --> 00:13:05,500
And that's instead giving us the key.

235
00:13:05,500 --> 00:13:09,180
It gives us the value for
each of the items in the But

236
00:13:09,180 --> 00:13:11,980
it's less efficient than using
the keys to produce the same results.

237
00:13:11,980 --> 00:13:15,200
So keep that in mind that it's better
to use the keys wherever possible.

238
00:13:15,200 --> 00:13:18,800
And use these references in here when
you're out putting display It's not really

239
00:13:18,800 --> 00:13:20,880
as optimized and thus it's less efficient.

240
00:13:20,880 --> 00:13:21,770
Sufficient.

241
00:13:21,770 --> 00:13:22,890
And started doing something like this.

242
00:13:22,890 --> 00:13:24,300
So we'll just put a separator in there.

243
00:13:28,310 --> 00:13:30,840
Four key in fruit is gonna
be much more efficient.

244
00:13:30,840 --> 00:13:33,340
So print fruit key like so.

245
00:13:33,340 --> 00:13:34,580
Running that.

246
00:13:34,580 --> 00:13:38,650
The second method there
is far more efficient.

247
00:13:38,650 --> 00:13:43,380
And we've looked at keys and values now,
both of those return list like objects.

248
00:13:43,380 --> 00:13:44,290
And just as a recap.

249
00:13:49,590 --> 00:13:54,310
print, fruit.keys and print fruit.

250
00:13:54,310 --> 00:14:01,670
[INAUDIBLE] I can see that

251
00:14:01,670 --> 00:14:08,230
both return list like objects, so the keys
method is returning a dict keys object.

252
00:14:08,230 --> 00:14:12,860
And values returns a dict values object,
and both of these are what's called a View

253
00:14:12,860 --> 00:14:17,180
objects and if the underlying dictionary
changes, then they will as well.

254
00:14:17,180 --> 00:14:20,840
So the best way to see how that
works is to show some example code.

255
00:14:20,840 --> 00:14:25,080
We can assign the dictionary keys to
a variable to monitor dictionary and

256
00:14:25,080 --> 00:14:26,700
check what happens to the variable.

257
00:14:26,700 --> 00:14:28,350
So coming back here,
we'll close down the run window.

258
00:14:28,350 --> 00:14:32,850
And we'll create a variable,
fruit underscore keys.

259
00:14:32,850 --> 00:14:34,010
It's fruit dot keys.

260
00:14:37,310 --> 00:14:41,330
Now print fruit dot keys or
fruit underscore keys, I should say.

261
00:14:41,330 --> 00:14:42,950
And I'll just delete these others now.

262
00:14:44,220 --> 00:14:48,250
So we've got that, and
then we could do a fruit, [SOUND]

263
00:14:48,250 --> 00:14:52,380
tomato, [SOUND]

264
00:14:52,380 --> 00:14:59,170
equals not nice with ice cream, print

265
00:14:59,170 --> 00:15:05,920
Fruit bring that we haven't
updated Fruit keys.

266
00:15:05,920 --> 00:15:09,690
We haven't made another call
now to the keys method.

267
00:15:09,690 --> 00:15:10,560
Run that.

268
00:15:10,560 --> 00:15:12,060
I'm going to end this video here.

269
00:15:12,060 --> 00:15:15,060
In the next video we're going to
continue our discussion of dictionaries

