Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
155 views
in Technique[技术] by (71.8m points)

python - functools.map alternative for dictionaries

TL;DR

Iteration + in place modification for dict as with functools.map over list

Abstract

As you might know, list objects can easily be processed in a single line by using functools.map, which takes a lambda and a list (or multiple) as parameters. Problem is, I'd like to do the same for dict objects since what I currently have is:

from functools import reduce

items = {
  'a': list(range(20)),
  'b': list(range(40)) 
}
power = lambda base, power: reduce(lambda a,b: a*b, [base for i in range(1,power)])
for key, value in items.items():
  items[key] = [power(i, 3) for i in value]

I don't really like this for as it currently is.

question from:https://stackoverflow.com/questions/66065006/functools-map-alternative-for-dictionaries

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

map does not actually do in place modification and it does the same thing as a list comprehension.

For a dictionary , you could do this:

items = { k:[power(i,3) for i in v] for k,v in items.items() }

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...