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”)

Hi @Vlad_Poltorak ,

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