Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 24, 2017 20:21:54

valarmorgulis
Зарегистрирован: 2017-10-24
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Фильтрация списка словарей

Доброго времени суток. Подскажите, как лучше отфильтровать
список и найти разницу переменных в цикле?
Спсиок словарей dic имеет вид:

  
{{'a1': {'str': 6}},
{'a2': {'str': 4}},
{'a3': {'str': 2}},
{'b1': {'vol': 3}},
{'b2': {'vol': 2}},
{'b3': {'vol': 1}}}

Надо получить:
  	
'a1',dic['a1']['str']-dic['b1']['str'] #получается 3
'a2',dic['a2']['str']-dic['b2']['str'] #получается 2
'a3',dic['a3']['str']-dic['b3']['str'] #получается 1 
Спасибо

Отредактировано valarmorgulis (Окт. 24, 2017 20:51:13)

Офлайн

#2 Окт. 24, 2017 20:38:52

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Фильтрация списка словарей

valarmorgulis
отфильтровать и разбить
то есть получить отдельно ключи с буквой а отдельно от ключей с буквой b?

Офлайн

#3 Окт. 24, 2017 20:42:20

valarmorgulis
Зарегистрирован: 2017-10-24
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Фильтрация списка словарей

marvellik
нет, сорри, разбивать не надо. Надо как на примере, букву рядом со значением

Отредактировано valarmorgulis (Окт. 24, 2017 20:44:35)

Офлайн

#4 Окт. 24, 2017 20:54:35

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Фильтрация списка словарей

valarmorgulis
Список словарей dic имеет вид:
это точно такой вид? со скобками нет ошибок?
 >>> ddd = {{'a1': {'str': 6}},
	{'a2': {'str': 4}},
	{'a3': {'str': 2}},
	{'b1': {'vol': 3}},
	{'b2': {'vol': 2}},
	{'b3': {'vol': 1}}}
Traceback (most recent call last):
  File "<pyshell#0>", line 6, in <module>
    {'b3': {'vol': 1}}}
TypeError: unhashable type: 'dict'
# непроверенный тип: ‘dict’ и кстати в словарях с ключами ‘b1’,'b2'….
нет ключей ‘str’ а только ‘vol’
 dd = {'a1': {'str': 6},
          'a2': {'str': 4},
          'a3': {'str': 2},
          'b1': {'vol': 3},
          'b2': {'vol': 2},
          'b3': {'vol': 1}}
dd_a = list(filter(lambda x: 'a' in x ,dd.keys()))
dd_b = list(filter(lambda x: 'b' in x ,dd.keys()))
for a,b in zip(dd_a,dd_b):
    print(a,dd[a]['str']-dd[b]['vol'])
a1 3
a2 2
a3 1

Отредактировано marvellik (Окт. 24, 2017 21:10:47)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version