# Stuck on C3W1Q7

Hi! I’ve been stuck for a while on the specification of observed and predicted benefit in the code - Question 7. I used several techniques with for loops, but i’m afraid i got confused with the structure of the tuples of pairs.
Here’s what i’ve got:

obs_benefit =
for i in range(len(pairs)):

``````    x = pairs[i][0][1]
y = pairs[i][1][1]
obs_benefit.append(obs_benefit_dict[(x,y)])

# compute average predicted benefit for each pair
pred_benefit = []
for i in range(len(pairs)):

a = pairs[i][0][0]
b = pairs[i][1][0]
pred_benefit.append(np.mean(a,b))
``````

I am pretty sure i miss something in the indexing, would be happy for any help
(i get the error “tuple indices must be integers or slices, not float”)

Is this the “c_for_benefit_score” exercise?

If so, the exercise offers you a template for you to enter your code. What I see is that you may have modified this template.

I am copying here the template provided for your convenience. You’ll have to start from this structure to develop your solution.

### START CODE HERE (REPLACE INSTANCES OF ‘None’, ‘False’, and ‘pass’ with your code)

``````# compute observed benefit for each pair
obs_benefit = None

# compute average predicted benefit for each pair
pred_benefit = None

concordant_count, permissible_count, risk_tie_count = 0, 0, 0

# iterate over pairs of pairs
for i in range(len(pairs)):
for j in range(i + 1, len(pairs)):

# if the observed benefit is different, increment permissible count
if obs_benefit[i] != obs_benefit[j]:

# increment count of permissible pairs
None

# if concordant, increment count

if (False): # change to check for concordance

pass

# if risk tie, increment count
if (False): #change to check for risk ties
pass

# compute c-statistic-for-benefit
cstat = None

# END CODE HERE
``````

Hi, i actually can’t see how can i wrap the ‘obs_benefit’ in one line of code, without using a for loop to go through all the pairs - to check their first and second element respectively…
That’s why a attempted to use the loop.

Ah! I get you know. There’s a way to do it by using one-line-for-loop in Python.

Example:

arr_x= [arr_dict[(i[1],j[1])] for (i,j) in pairs]

Try that! it is very cool.

1 Like

Got it! Very cool indeed, thanks

I am glad it works now!

Good luck with the rest of the exercise!

Juan