Найти - Пользователи
Полная версия: Фильтрация списка словарей
Начало » Python для новичков » Фильтрация списка словарей
1
valarmorgulis
Доброго времени суток. Подскажите, как лучше отфильтровать
список и найти разницу переменных в цикле?
Спсиок словарей 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 
Спасибо
marvellik
valarmorgulis
отфильтровать и разбить
то есть получить отдельно ключи с буквой а отдельно от ключей с буквой b?
valarmorgulis
marvellik
нет, сорри, разбивать не надо. Надо как на примере, букву рядом со значением
marvellik
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
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB