to3
to3

Reputation: 29

dict with one key and multiple values

I was wondering if there's a way for me to pull a value at a specific index. Let's say I have a key with multiple values associated with it. But in my dictionary I have multiple keys, each key with multiple values. I want to iterate through the keys and then each respective value associated with that key. I want to be able to pull the value at the first index and subtract it from the value at the second index.

d= {108572791: [200356.77, 200358], 108577388: [19168.7, 19169]}

output for key 108572791 would be -1.33
output for key 108577388 would be -.03

I've try reading up on dict and how it works apparently you can't really index it. I just wanted to know if there's a way to get around that.

for key, values in total_iteritems():
    for value in values:
       value[0]-value[1]:

Upvotes: 0

Views: 1096

Answers (3)

Celius Stingher
Celius Stingher

Reputation: 18367

Edit:

Since the question is way different now, I'll address the new subject:

d= {108572791: [200356.77, 200358], 108577388: [19168.7, 19169]}
for i in d:
    print("Output for key ",str(i), "would be ",(d[i][1]-d[i][0]))

Output:

Output for key  108572791 would be  1.2300000000104774
Output for key  108577388 would be  0.2999999999992724

Original answer

Yes. When you have a dict containing a list as value if you want to obtain a specific value, then you need to address the index in the list. An example is:

a = {'Name':['John','Max','Robert']}

This means that:

print(a['Name']) 

Output:

['John','Max','Robert']

Since ['Name'] is a list:

for i in range(len(a['Name'])):
    print(a['Name'][i]

Output:

John #(Because it's the index 0)
Max #(Index = 1)
Robert #(Index = 2)

If you want a specific value (for instance 'Max' which is index = 1)

print(a['Name'][1]

Output:

Max

Upvotes: 3

Mert Köklü
Mert Köklü

Reputation: 2231

You can use list of tuples if you want to use indexing.

d= [(108572791,[200356.77, 200358]), (108577388,[19168.7, 19169)]

for tuple in my_list:
   print(tuple[0]) 
   for value in tuple[1]:
       print(value) 

Upvotes: 0

cloud88111
cloud88111

Reputation: 106

Depends on how many values in key obvious but this does the trick:

for x in d:
        print(x)
        print(d[x][0]-d[x][1])

Upvotes: 0

Related Questions