My program needs to output a list of names with three numbers corresponding to each name however I don't know how to code this is there a way I could do it as a dictionary such as cat1 = {"james":6, "bob":3} but with three values for each key?
- 4You can have the value for each key be a list: {"james":[1, 2, 3], "bob":[0, 7]}santosh.ankr– santosh.ankr2015-03-25 22:45:42 +00:00Commented Mar 25, 2015 at 22:45
- Related: stackoverflow.com/a/29246754/758446BlackVegetable– BlackVegetable2015-03-25 22:50:34 +00:00Commented Mar 25, 2015 at 22:50
Add a comment |
4 Answers
Both answers are fine. @santosh.ankr used a dictionary of lists. @Jaco de Groot used a dictionary of sets (which means you cannot have repeated elements).
Something that is sometimes useful if you're using a dictionary of lists (or other things) is a default dictionary.
With this you can append to items in your dictionary even if they haven't been instantiated:
>>> from collections import defaultdict >>> cat1 = defaultdict(list) >>> cat1['james'].append(3) #would not normally work >>> cat1['james'].append(2) >>> cat1['bob'].append(3) #would not normally work >>> cat1['bob'].append(4) >>> cat1['bob'].append(5) >>> cat1['james'].append(5) >>> cat1 defaultdict(<type 'list'>, {'james': [3, 2, 5], 'bob': [3, 4, 5]}) >>> Comments
The value for each key can either be a set (distinct list of unordered elements)
cat1 = {"james":{1,2,3}, "bob":{3,4,5}} for x in cat1['james']: print x or a list (ordered sequence of elements )
cat1 = {"james":[1,2,3], "bob":[3,4,5]} for x in cat1['james']: print x 3 Comments
Zizouz212
The value of the keys in
cat1 are sets. Just something to point out.santosh.ankr
I almost always explicitly declare sets using the set() call to avoid confusion with dictionaries. You really shouldn't have to examine the thing for colons before you know what it is.
William Stuart
you could also use a dictionary containing a tuple with keys: cat1 = { "james": (1, 2, 3), "bob": (3, 4, 5) }
the key name and values to every key:
student = {'name' : {"Ahmed " , "Ali " , "Moahmed "} , 'age' : {10 , 20 , 50} } for keysName in student: print(keysName) if keysName == 'name' : for value in student[str(keysName)]: print("Hi , " + str(value)) else: for value in student[str(keysName)]: print("the age : " + str(value)) And the output :
name Hi , Ahmed Hi , Ali Hi , Moahmed age the age : 50 the age : 10 the age : 20