1

У меня есть словарь ключей дат. Каждая дата имеет пару ключей: значение проекта и список дней.Добавление ключа для средних значений во вложенных словарных списках

Я бы хотел добавить среднюю метрику к каждому ключу даты, удалив выбросы выше 6. Мой код близок, но дает некоторые жуткие результаты.

import numpy as np 
d = {} 
d['1/2/15'] = {'Project 1' : [1,4,7], 'Project 2' : [1,5, 11]} 

for key, value in d.iteritems(): 
    avg = np.mean([x for x in d[key]['Project 1'] if x < 6]) 
    d[key][str(value) + ' Average'] = avg 

print d 

Ожидаемый результат:

{'Project 1' : [1,4,7], 'Project 1 Average' : 2.5, 'Project 2' : [1,5,7], 'Project 2 Average' : 3.0 } 

ответ

1
import numpy as np 
d = {} 
d['1/2/15'] = {'Project 1' : [1,4,7], 'Project 2' : [1,5, 11]} 

for key, value in d.iteritems(): 
     d_avg = {} 
     for k, v in value.iteritems(): 
      avg = np.mean([x for x in d[key][k] if x < 6]) 
      d_avg[str(k) + ' Average'] = avg 
     d[key].update(d_avg) 

print d 

выход

{'1/2/15': {'Project 2 Average': 3.0, 'Project 2': [1, 5, 11], 'Project 1 Average': 2.5, 'Project 1': [1, 4, 7]}} 

проблема словарь не может быть обновлен в то время как итерация через него.

+0

Это интересное решение, но вы жестко закодировали k в названии ключей, поэтому он вычисляет только среднее значение для Project 2. Есть ли способ сделать это для обоих проектов? – user2242044

+0

просто заменил его на 'k', я вижу проблему сейчас, я дважды проверю код. –

+0

Извините, я не следую за вами. – user2242044

Смежные вопросы