0
why do we need list() method after keys(), and map()
counts = { 'chuck' : 1 , 'annie' : 42, 'jan': 100} lst = list(counts.keys()) , if we omit list() it shows what is called view object, but that's not a list itself? and why also the list after map, I didn't get what the output of map means
5 Answers
0
the output of keys() is dict_keys(['chuck', 'annie', 'jan']) they call it view object, but it has the form of a list as I see it, or the question what's different between view object and a list
+ 3
sum fatt ,
using the map() function returns an iterator. this is very time and memory efficient.
to get the values, we use a for loop with the given iterator, so that we can do some processing with the values that are yielded one by one at the time
if we wanted to get all of the values, we can use list (constructor) that will use the iterator to create a list.
+ 2
Because the keys() method doesn't return a list. I assume same with map() but I haven't seen your code.
+ 1
With a simple lookup, it says keys() method also returns a view object. You can do your own research on view objects, but i assume that they are containers such as a list or tuple with specific methods. You could think on this for weeks, or you could just learn how to use list, tuple, and dict comprehension to get your desired values in your desired container.
# if counts is the same variable you supplied.
lst = [key for key, value in counts.items()] #lst is now a list of the keys
0
for the map :
list_int = [1, 12, 15, 21, 131]
list_string = map(str, list_int)
print(list(list_string)), the output without the list(), is <map object at 0x7ee6cd3910> but why is it showing a memory address, and how could list() turn this address into a list