Let's talk about yet another fascinating data structure known as dictionaries. Ever wondered how your iPhone stores phone numbers and then allows for simple and efficient lookups? Well, no need to wonder anymore after you watch this video!
In case you missed it, here are the previous parts of the series:
0:00 hey guys how's it going so in the last
0:02 video we talked about doing projects
0:06 right so we going over the solutions of
0:09 some projects and this video what I talk
0:11 about is dictionaries. They're very
0:13 important in a lot of programming
0:16 languages and other ones and in C/C++ it
0:19 might be called maps but in Python it's
0:21 called a dictionary so let's see what it
0:24 is about. Okay so essentially the idea
0:29 behind dictionaries is to map keys to
0:34 values
0:36 hopefully that defines everything right
0:38 now
0:40 basically that's a very cryptic
0:42 definition that I gave you if you don't
0:43 know what it is yeah it maps two things
0:48 okay so anytime you have a relationship
0:50 between two things you want to use
0:52 dictionaries and when you don't have a
0:54 relationship relationship between two
0:57 things you want to use a list for
0:59 example if you want to just remember a
1:02 bunch of numbers and that's all you care
1:04 about you want to use a list okay so for
1:07 example I only care about a bunch of
1:10 numbers like this I want to use a list
1:15 now what if I want to know a way where
1:19 hmm
1:20 I don't know I use my cell phone right I
1:24 use this thing over here and using this
1:28 thing I can look up a person's name and
1:33 based on that person's name it gives me
1:35 back their phone number right or if I
1:38 type in their phone number it kind of
1:40 goes the other way around
1:41 whatever how can we do that well that's
1:45 the beauty of dictionaries my friend so
1:48 you're going to learn something very
1:50 powerful today so let's let's go at it
1:53 let's say I wanted to make a phone book
1:56 write with what we know in list I mean
2:00 can you think of a way how you might do
2:02 it I don't know I mean you could store
2:08 numbers right like this as a string and
2:12 then store the second number as a string
2:15 and go 4 5 6 2 2 4 4 3 3 right something
2:20 like that whatever these are not clearly
2:22 very silly numbers but ok and then you
2:25 can say phone book and give me the
2:26 zeroth number phone book give me the
2:28 first number also notice we're using
2:30 something different for coding we're
2:32 using rappelled IT right so it's
2:35 actually spelled repl by T and the
2:40 beauty of this is that it teaches you
2:43 how to code while it makes it very easy
2:45 for you to code you can use this without
2:48 having an actual working environment
2:52 locally downloading onto your computer
2:54 you can just run your code on the fly
2:55 and what I'm going to do for you guys
2:57 is once I'm done with this session I'm
3:00 going to take this link and paste it
3:02 into the YouTube description and that
3:05 way you can actually get access to these
3:07 notes directly ok so you'll be able to
3:10 come to this link and get for example
3:14 the link right now is this ok by it but
3:18 by the time we're done with this video
3:19 the link might be different and I'll
3:21 post the most updated link for you guys
3:22 in the YouTube description ok so the
3:27 website is repl DT and you can pick
3:30 programming language Python for your
3:33 programming language and then just code
3:35 here ok
3:36 so let's check out what this does let's
3:38 make sure to add print print let's check
3:44 it out
3:44 so you can see you have 1 2 3 & 4 5 6
3:47 right you printing out the zeroth
3:49 element and then the first element of
3:51 this list that's great but I mean it's
3:54 not really fun to remember names as
3:56 numbers right because you're not going
3:58 to be you're not gonna go oh I'm gonna
4:01 call you zero Johnny and I'm going to
4:03 call you 1 Bob and then every time you
4:05 have to look at Johnny's number you're
4:07 going to type in zero to get back
4:08 Johnny's number or one to get Bob's
4:10 number that would be terrible
4:13 and what if you had stored hundreds of
4:16 people in your list then it gets really
4:18 complicated but now let's use
4:20 dictionaries here's how dictionaries
4:22 work okay let me describe right here in
4:25 notes dictionaries okay
4:31 here's other word you have some
4:34 dictionary we will called it a dick okay
4:38 and you did and the store key value
4:42 pairs so if you put in a key gives you
4:44 back the value okay and how you store
4:49 things into a dictionary is like so your
4:52 key goes here and your value goes here
4:54 okay let's set a key one value 1 then we
4:58 can say key - value 2 okay and you can
5:03 keep doing this all day all right now
5:07 let's create a dictionary
5:09 ok so let's create our example phonebook
5:12 so I'm going to say
5:14 Kazi which is my name which is my last
5:17 name but I got go on my last name pretty
5:19 much everywhere so we're going to take
5:20 the string cause E as the cause e is the
5:24 what is that the key or the value if you
5:28 said key good job and we're going to
5:30 store the number 1 2 3 4 5 6 7 8 9 0 now
5:37 notice that I'm storing this as a string
5:40 and not an actual number like an integer
5:43 or something why do you think that is
5:45 well think about it if I remove the
5:48 quotes from here what is this going to
5:50 do is going to do 1 2 3 - 4 5 6 - 7 8 9
5:56 0 and I'm going to end up getting back
5:59 on negative 8223 so it's actually going
6:03 to end up storing it like this that's
6:05 not what I want I want the exact number
6:08 so usually when you want things exactly
6:10 how they are strings are perfectly good
6:12 data type to use there and now I'm going
6:15 to say Bob and I'm going to store Bob's
6:17 number as okay is this a which key is
6:22 this this is the second key and now
6:24 there's going to be the second
6:25 I'm going to store his number as 2 2 2 2
6:27 2 2 & 2 2 2 2
6:29 very easy number that Bob has he gets
6:32 tons of wrong calls and he gets very
6:37 annoyed now to make it a little bit
6:39 nicer on me to read this dictionary sure
6:41 I can have it as a long one line but as
6:43 you can imagine as we begin to store
6:46 multiple people it's going to be
6:47 spilling over to the right side so what
6:49 I want to do is make it easier on my
6:51 eyes and make it easier to type so I'm
6:55 going to go to the start of the line hit
6:56 enter and python knows what to do with
6:58 it and where to put it and I'm going to
7:00 go to the start of this line and hit
7:01 enter okay I'm also going to go here and
7:04 hit enter and I'm going to go here and
7:07 hit enter okay
7:08 and what this does for me is it just
7:11 makes it easier for me to read okay kind
7:14 of like this um and i can just simply
7:19 start putting things in here we can
7:21 leave that here there that's not a
7:22 problem we can leave that one right up
7:24 there and i can put in another person
7:27 right cat cat cat
7:29 let's just do cat caller cat let's say
7:32 her number is 3 3 3 3 3 3 3 ok and now
7:37 what I can do is I can do phone book and
7:39 what's the way I can get back cause ease
7:42 phone number right so imagine you go to
7:46 your phone your iPhone or whatever you
7:48 have and you simply swipe up or down
7:52 right you go to your words contacts how
7:57 does contacts work I go to my contacts
8:01 and I type in let's say my name right so
8:06 how does it find it and how does it give
8:09 me back the actual number well today
8:11 you're going to find out the secret
8:13 behind how it works ok so it takes in
8:18 the key or my name Rafeh Qazi and it
8:20 spits back the value associated with it
8:23 it could be my email address it could be
8:25 my phone number it could be whatever the
8:27 heck I want it to be right so now let's
8:29 go into phonebook and we can say Qazi
8:32 right that's you put in the key and this
8:35 whole thing liquefies and
8:38 turns into the value okay so that whole
8:41 thing turns into one value okay so let's
8:45 print it out and let's see what we get
8:47 and I'll break it down how this
8:48 expression works so we got back one two
8:52 three four five six seven eight nine
8:54 zero phone book is just this whole
8:56 dictionary starting with the squiggly is
8:58 right so phone book is this thing right
9:00 there
9:01 and I'm indexing that phone book by Qazi
9:05 okay so as you can see I have this list
9:08 here and I'm simply indexing it by qaz I
9:12 okay
9:13 and once I index it what happens here
9:17 right once I index it by Qazi I just get
9:20 back the value so this whole thing
9:23 liquidates into that and then that
9:27 result actually gets printed out on the
9:29 screen okay that's how the dictionary
9:33 works now let's say I wanted to make it
9:35 a little bit more complicated to where
9:38 each person had you know like their
9:43 names and each person had their own
9:45 email address associated with them and
9:48 whatever right so we could make it a
9:50 little bit more interesting for example
9:52 let's say that I wanted to add more
9:55 values associated with Qazi I don't want
9:57 just his phone number but kind of like
9:59 how my phone does it
10:00 it also has caused these email addresses
10:03 and it also has causes home address and
10:06 whatever else right so how would I do
10:07 that well what I need to do is I need to
10:10 have one key that gives me back multiple
10:13 values associated with it here I have a
10:15 key Qazi I have a key Bob and I have a
10:18 key tag so what I need to do to cause e
10:21 for example is make it give me back
10:24 multiple values well what's a pretty
10:26 darn good thing to give back multiple
10:28 things hmmm I remember it's a list how
10:34 about a list of things so let's turn
10:37 this from a spare string to a list that
10:40 contains one the phone number and then
10:44 we can say to it contains one email
10:47 address so we can say
10:50 Ozzie at cause e.com okay fake email
10:54 address let's close that down there and
11:00 okay sweet so now we have a list
11:02 containing two strings inside of it the
11:05 first at first index it's a phone number
11:08 and then order 0th index rather and then
11:11 at the first index we have two email
11:12 address I can do the same thing to the
11:16 other ones but let's just play around
11:18 with it and see what we get so I'm going
11:21 to change this from phonebook Aussie and
11:23 I'm going to say ok I know that once I
11:27 run this line of code what I will get
11:30 back is actually this list this whole
11:34 thing is actually going to evaluate to
11:35 the value of Kazi right so you put in
11:38 the key look at the formula at the top
11:39 right you put in the key and you get
11:41 back the value from the other side so
11:44 I'm going to run it and let's see what
11:45 we get so you can see that we get back
11:47 the value I know that this thing is
11:50 going to turn into a list then I have to
11:53 think about how can I access different
11:55 things from the list let's say my
11:57 question to you was can you get me cause
11:59 these phone number you would say okay
12:02 I'll get you cause these phone number I
12:04 know that it's inside of a dictionary
12:06 where the key is
12:07 Kazi where there is a key cause II and
12:10 if I access that key Kazi right if I
12:14 access the key the dict and if I access
12:19 the key Kazi I get back a list of things
12:24 containing his a phone number and email
12:31 right so you're like boom now I know
12:34 that I have a list of things how can I
12:37 access things inside of a list I
12:38 remember how you access things inside of
12:42 a list is based on the index number
12:44 right so for example if I go up here if
12:48 I have to access the first element or
12:51 the zeroth element of the list I would
12:52 do this and this gives me the first
12:54 element
12:54 list whereas for a dictionary you would
12:58 actually put in for a dictionary you
13:03 would actually put in a name or
13:05 something something that's nice and easy
13:07 to remember in a list you use numbers so
13:11 then you go okay
13:12 well I know that cause ease email
13:15 address is at position one right this is
13:19 index zero and this is index one so if I
13:21 ask you the question of getting me cause
13:23 ease email address you know that this
13:26 whole expression evaluates to a list
13:28 well then you can just say one right
13:33 just like this thing over here and let's
13:37 change it to zeroth element the list
13:39 just to be very accurate let's hit that
13:41 and you can see that I get back Ozzy's
13:43 email address well what if I wanted to
13:46 get a cause ease phone number I would
13:50 just change this to a zero and you can
13:53 see that I got back that's the same
13:54 thing now let's say I want to do the
13:57 same thing for Bob right turn this is
13:59 the phone number this is Bob at Bob calm
14:01 and then we have let's turn this into a
14:05 list of things and let's call it cat at
14:09 cat calm and we have this closing I have
14:13 to make sure that I close my quotes here
14:17 close the quotes there okay great so I
14:21 have a phone book let's get the
14:24 terminology right let's just practice
14:25 with the terminology it's good to say it
14:28 over and over again I don't care if I
14:30 sound crazy and I you shouldn't care the
14:32 few sound crazy but understand the
14:34 terminology because is going to help you
14:35 be able to research it better understand
14:37 it better synthesize the information
14:39 better and be able to write better code
14:42 ultimately because you will understand
14:43 all of the data structures whereas if
14:46 you just keep mumble and hand-waving
14:48 you're going to get very confused later
14:50 on you might be able to get past some of
14:51 this stuff but then when we get into
14:53 list inside of dictionaries inside lists
14:55 of dictionaries is going to get very
14:57 complicated you can be like oh man I
14:59 wish I learned the terminology when it
15:01 was nice and easy so let's let's just
15:04 talk through it I have a dictionary that
15:06 contains how many keys
15:08 three keys what's each keys name Kazi
15:11 Bob cat what do each of the keys contain
15:15 each of the key contains a value and
15:17 that value is a list okay good each key
15:22 contains a value which is a list that's
15:24 good and how many elements is each list
15:26 contain each list contains two elements
15:29 right as we can see right here so now if
15:34 I wanted to get cats number I could do
15:38 cat and I can say zero and I get back
15:43 three three three three three three
15:45 three three three three so let's give it
15:46 an exact let's give it a run and you can
15:48 see on the right-hand side that's what I
15:50 get back okay so I will leave this here
15:54 for you guys and I will link you guys to
15:56 the code so you guys can go and play
15:59 around with this stuff as well okay
16:04 that's it for dictionaries and we will
16:07 get into its better use cases later on
16:09 for now you're gonna watch Boolean
16:13 algebra jujitsu after this video great
16:17 job guys take care I will see you in the
16:21 next video