Python Jumpstart by Building 10 Apps Transcripts
Chapter: App 10: Movie Search App
Lecture: Exploring the search API: The Pythonic Version
0:01 Let's return to how we're parsing these movies here.
0:04 What we're doing is we're creating this movie list
0:06 we're looping over all the results, we're allocating one of these,
0:09 and then we're adding it here, let's address this part first.
0:13 So it turns out that this keyword value keyword value thing that we're doing
0:18 actually has a shortcut, a simplified version,
0:21 when you're working with dictionaries as the source,
0:24 and this md is a dictionary, we'll be able to condense this down
0:28 assuming that the keywords here and the keys in the dictionary
0:33 that it's coming from actually line up exactly,
0:36 if that's the case, you can do what I’m bout to show you.
0:39 So let me save this, let me make a copy of this and we'll try another one,
0:42 so quick diversion so you guys understand what's going on here,
0:46 suppose I have a method or function and it has
0:49 some positional parameters, so like x y and z, right,
0:53 if I'm going to call this method, I would say seven, one
0:58 and I could even say z = 2, right
1:01 so I could either call it positionally like x and y
1:04 or I could call this function using the keyword named parameter thing.
1:08 Some methods are extensible, so I could say format = true, age = seven
1:16 but you can see, PyCharm is saying no, no, this is not going to work;
1:19 so in order to make this sort of extensible,
1:22 to say look you can pass other stuff and maybe we can work with it
1:25 we're going to use this concept that's often called
1:28 in the variable kwargs, keyword arguments.
1:31 Now this name here is just a convention,
1:34 it could be jerry it could be anything, it doesn't matter,
1:37 the symbol that we use is this ** here,
1:41 so if I print out kwargs, like that, if I run this, let's see what we get;
1:48 you can see kwargs its format is true and age as seven
1:53 like this extra step that we passed here, under **kwargs,
1:57 becomes, you can see the curly braces- a dictionary.
2:00 So, with that in mind, there's a way to reverse this,
2:04 so what we're doing here is we're taking keyword arguments
2:07 and we're turning them into a dictionary,
2:10 but we can use in a reversed direction we can use this **
2:13 to go from a dictionary to keyword arguments,
2:16 so what we can do down here is we can replace all of this
2:19 with just going to the dictionary that has the data md
2:23 and we can say ** md, and what that means basically is
2:28 exactly what we had written besides little zeros,
2:31 besides this little part right here where I was saying alternate default values
2:35 but this is what it means, it means go here and get all the values out
2:39 and apply them as keyword arguments.
2:42 So if I run this, it should run exactly the same,
2:45 if I search for 'runner' we should see things like Blade Runner and so on.
2:49 So this is pretty cool, again I said it's only going to work
2:53 if the keyword arguments or the arguments expected
2:56 exactly match up with the keys, if there is
2:59 one is capital title one is lower case title this isn't going to work.
3:03 This is really, really nice. Now, let's do one more thing.
3:07 We can improve it one more time,
3:10 we can come down here and whenever you want to
3:13 create a list and then loop over something,
3:15 and then put some sort of transformed or computed element into the list like this,
3:20 we can do this with a list comprehension.
3:24 So, we saw that before, we can come down here and just say this
3:27 maybe write like this for md in movie list, and what are we going to put in,
3:36 we want to put in this movie result thing,
3:39 so taking the md and converting it to that, there.
3:42 Now, this should run more or less identical, the results should be identical,
3:46 so if we go down here for runner again, we get exactly the same results.
3:52 So look at how amazing this is, look how short and clean and concise,
3:56 we want to go to the movie list and convert it into a list of movie results
4:01 by assigning all the values that are in the dictionary,
4:05 compare that to this big puppy, this one is more flexible
4:09 and maybe you need to use this form like I said
4:12 if the keys don't match up or things like that,
4:14 but I think this is really beautiful and we'll use that in this particular app.