Pythogen
Pythogen

Reputation: 640

How to Access a List through a key?

I have a program that has a save file full of lists. It Loads up the Items by making lists. It gets the Names from the file too. Since I couldn't "unstring" a string so I put the names as keys. My problem is re-saving the lists when you are done using the program. I cant seem to access the contents inside the list to write them to a file. I have another List with keys so I can access the Names.

ListKey = {1:'Food', 2:'Veggie'}
List={'Food':['apple','pear','grape'], 'Veggies':['carrot','Spinach','Potato']}

file.write(ListKey[1]) #works fine
currentList=ListKey[1]
file.write(List[currentList[1]]) #Doesn't Work

When I try to do the code above, I get a Key Error, I know it is trying to write the 'o' in food. Is there anyway to get around this?

Upvotes: 1

Views: 104

Answers (3)

Clay
Clay

Reputation: 56

It looks like you are trying to access a value inside your key pairs. Try:

List[currentList][0] to access 'apple'
List[currentList][1] to access 'pear'

etc...

alternatively if you want all the values, it would look like

List[currentList]  or 
List['Food']

Hope this helps, just your syntax of how to access the list inside.

edit: https://docs.python.org/2/tutorial/datastructures.html#nested-list-comprehensions (added link to data structure docs)

Upvotes: 4

jrar876
jrar876

Reputation: 1

ListKey = {1:'Food', 2:'Veggie'} List={'Food':['apple','pear','grape'], 'Veggies': ['carrot','Spinach','Potato']} currentList = ListKey[1] #'Food' currentList[1] # 'o'

You are actually indexing into the string "Food". Hence currentList[1] is 'o'. Since List has no key 'o' you get at key error.

Upvotes: 0

mike.k
mike.k

Reputation: 3447

currentList[1] is just the value o, use:

file.write(List[currentList])

Upvotes: 1

Related Questions