4

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?

2
  • 4
    You can have the value for each key be a list: {"james":[1, 2, 3], "bob":[0, 7]} Commented Mar 25, 2015 at 22:45
  • Related: stackoverflow.com/a/29246754/758446 Commented Mar 25, 2015 at 22:50

4 Answers 4

5

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]}) >>> 
Sign up to request clarification or add additional context in comments.

Comments

3

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

The value of the keys in cat1 are sets. Just something to point out.
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.
you could also use a dictionary containing a tuple with keys: cat1 = { "james": (1, 2, 3), "bob": (3, 4, 5) }
1

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 

Comments

0

Add multiple values in same dictionary key :

subject = 'Computer' numbers = [67.0,22.0] book_dict = {} book_dict.setdefault(subject, []) for number in numbers book_dict[subject].append(number) 

Result:

{'Computer': [67.0, 22.0]} 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.