#python
#python
Вопрос:
from multiprocessing import Pool
def add (x):
return x 2
if __name__ == '__main__':
x = [('a', 1) ,('b', 2) ,('c', 3), ('d', 4)]
y = list ()
for items, values in x:
y.append(values)
p = Pool(5)
response = p.map(add, y)
print(response)
p.close()
В приведенном выше случае я хочу сопоставить результаты [3, 4, 5, 6] с [‘a’, ‘b’, ‘c’, ‘d’]
, и это должно быть [(‘a’, 3) , (‘b’, 3) , (‘c’, 5), (‘d’, 6)]
Примечание: я не могу изменить функцию добавления
Комментарии:
1. Вы можете использовать понимание списка с
zip
:[(pair[0], result) for pair, result in zip(x, response)]
Ответ №1:
Как упоминал @alkasm, вы можете использовать понимание списка и zip
связать список ввода со списком результатов. Вы также можете использовать понимание списка для создания y
списка.
Попробуйте этот код:
from multiprocessing import Pool
def add (x):
return x 2
if __name__ == '__main__':
x = [('a', 1) ,('b', 2) ,('c', 3), ('d', 4)]
y = [e[1] for e in x] # 1,2,3,4
p = Pool(5)
response = p.map(add, y)
res = list(zip([e[0] for e in x], response))
print(res)
p.close()
Вывод
[('a', 3), ('b', 4), ('c', 5), ('d', 6)]