2015-07-09 6 views
1

У меня есть список словарей. Каждый из них имеет ключ и 3 списка значений. Каждое значение - это чтение АЦП, у меня есть функция, чтобы взять и выплюнуть преобразованное значение.Итерирование значений в списке словарей PYTHON

Я хотел бы принять каждое значение и преобразовать его с помощью этой функции.

for value in my_list[0].itervalues(): 
    print value 

Это печатает значения в виде списка, но я хочу, чтобы принять значение каждого в отдельности и передать его функции должны быть преобразованы

for value in my_list: 
     print value 

Это печатает каждый словарь

I я не уверен, как объединить эти петли вместе, чтобы взять отдельные значения и добавить текущий список словарей с преобразованными значениями или создать отдельный список словарей в целом. Я полагаю, что добавление будет более эффективным.

ответ

2

Вы можете использовать map функции, чтобы применить функцию по всем пунктам значения:

for value in my_list[0].itervalues(): 
    print map(your_func,value) 

И если вы хотите создать новый словарь, который вы можете сделать это в Словаре понимания:

new_dict={k:map(your_func,val) for k, val in your_dict.iteritems()} 

Также вы можете заметить, что это зависит от вашей сигнатуры функции и ваших значений, например, если ваша функция принимает более одного аргумента, вы не можете использовать здесь map.

Пример:

>>> def my_func(a,b): 
... return a+b 
... 
>>> l=[(1,2),(3,4),(5,6)] 
>>> map(my_func,l) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: my_func() takes exactly 2 arguments (1 given) 

В этом случае вы можете использовать список понимание:

>>> [my_func(i,j) for i,j in l] 
[3, 7, 11] 
+0

Это работает, но для добавления каждого словаря с новыми значениями? – cc6g11

+0

@ cc6g11 В этом случае вы можете использовать понимание dict! проверьте редактирование! – Kasramvd

+0

Что делать, если мне нужно передать 2 аргумента. Как и до значений в словаре, но также и с ключами каждого словаря. @ Kasra – cc6g11

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