I’m dealing with Python dicts now. I wrote a code:
import random
categories = {1 : "Antics", 2 : "Tickets", 3: "Moviez",
4 : "Music", 5 : "Photography", 6 : "Gamez", 7 : "Bookz",
8 : "Jewelry", 9 : "Computers", 10 : "Clothes"}
items = {"Picture" : 1, "Clock" : 1, "Ticket for Mettalica concert" : 2,
"Ticket for Iron Maiden concert" : 2, "Ticket for Placebo concert" : 2,
"The pianist" : 3, "Batman" : 3, "Spider-Man" : 3,
"WoW" : 6, "Cabal" : 6, "Diablo 3" : 6, "Diablo 2" : 6,
"Thinking in Java" : 7, "Thinking in C++" : 7, "Golden ring" : 8,
"Asus" : 10, "HP" : 10, "Shoes" : 11}
for key, val in categories :
for k, v in items :
if key == v :
print(val, k)
I wanted to create a 3rd dict, where i would have sth like :
dictThe3rd = {"Antics" : "Picture", "Antics" : "Clock", "Tickets" : "Ticket for Mettalica concert", "Ticket" : "Ticket for Iron Maiden concert", "Ticket" : "Ticket for Placebo concert", ...}
and so go on.
How to do this? My code shows:
test.py, line 14, in <module> for key, val in categories : TypeError: 'int' object is not iterable
If you use a dict as an iterator, it will yield only its keys, not tuples of keys and values. You would have to use
categories.items()(orcategories.iteritems()if you are only using Python 2.x) to get those tuples:You can use dict comprehensions to get a dict with category names as keys and all items in that category as values:
Explanation:
The inner comprehension in square brackets will list all items that have a category of
cat. The outer comprehension will iterate over all category keys and names, setting the category name as the new dict key and the inner comprehension as a value.