Python Forum
Not understanding dictionaries - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Not understanding dictionaries (/thread-27727.html)



Not understanding dictionaries - gr3yali3n - Jun-18-2020

Ok, I am reading a book automate the boring stuff, I am on the dictionaries chapter because I’m focusing on dictionaries right now maybe I should go back to for loops but,
I have a couple questions. Regarding the following code and what it is doing.
At the for loop for k,v in inventory.items() what is happening here?
At print(str(v) + ‘’ + k ) what is the ‘ ‘ empty string?
And I guess at item_total += v what is going on here as well?





stuff={
	'rope':1,'torch':6,'gold coins':45,'dagger':1,'arrow':12
}

def display_Inventory(Inventory):
	print('Inventory')
	Item_total=0
	for k,v in Inventory.items():
		print(str(v)+''+k)
		Item_total += v
		print('Total number of items:' + str(Item_total))
		
display_Inventory(stuff)



RE: Not understanding dictionaries - Larz60+ - Jun-18-2020

use keys to get count:
>>> stuff={
...     'rope':1,'torch':6,'gold coins':45,'dagger':1,'arrow':12
... }
>>> def display_inventory(inventory):
...     print(f"\nInventory: Total items: {len(inventory.keys())}\n")
...     for key, value in inventory.items():
...         print(f"{key}: {value}")
... 
>>> display_inventory(stuff)

Inventory: Total items: 5

rope: 1
torch: 6
gold coins: 45
dagger: 1
arrow: 12



RE: Not understanding dictionaries - bowlofred - Jun-18-2020

items() returns all of the keys/values in the dictionary, one tuple at a time. So each time through the loop, k is set to one of the keys, and v to the corresponding value of that key.

>>> d = {'key': 'value', 'A': 1, 'B': 2}
>>> list(d.items())
[('key', 'value'), ('A', 1), ('B', 2)]
The empty string is probably a typo. I'd guess someone wanted a blank space between the key and the value in the print and it became empty instead of a space.

This is the form of an augmented assignment. It's basically the same thing as writing Item_total = Item_total + v


RE: Not understanding dictionaries - gr3yali3n - Jun-20-2020

Wow!? Thanks again! I should have gotten that.

Now I still don’t seem to understand item_total += v
Is it set to the dictionaries value pairs ,added, then printed
Out by str(item_total) ?


RE: Not understanding dictionaries - buran - Jun-20-2020

(Jun-20-2020, 03:10 AM)gr3yali3n Wrote: Now I still don’t seem to understand item_total += v

this is equivalent to
item_total = item_total + v
it get printed because of the print function. you need to convert to str with str(item_total) because you can not concatenate str and int. As @Larz60+ suggested, better use formatted string literals (f-strings)