当我从同一函数获取键和值时,使用字典理解构建字典
build a dict using dictionay-comprehension when I get keys and values from the same function
假设我有一个复杂函数 get_stuff
,它接受一个 int 和 returns 一个元组,第一个元素是 str 类型。以下示例具有相同的行为,但假设实际功能更复杂并且不能轻易一分为二:
def get_stuff(x):
return str(5*x),float(3*x)
我想要的是构建一个 dict,其 (key,value) 对是 get_stuff 在特定整数集上调用时的结果。一种方法是:
def get_the_dict(set_of_integers):
result = {}
for i in set_of_integers:
k,v = get_stuff(i)
result[k] = v
return result
我宁愿为此使用字典理解,但我不知道是否可以在理解中拆分对以分别捕获键和值。
def get_the_dict_with_comprehension(set_of_integers):
return {get_stuff(i) for i in set_of_integers} #of course this doesn't work
我怎样才能做到这一点?
你可以这样做,不完全是字典理解:
dict(get_stuff(i) for i in range(10))
如果你真的想使用dict
理解,你可以这样做:
{k: v for k, v in [get_stuff(i) for i in set_of_integers]}
除了推导式之外,您还可以使用 get_stuff
:
返回的键值对将整数集映射到 dict
构造函数
dict(map(get_stuff, set_of_integers))
假设我有一个复杂函数 get_stuff
,它接受一个 int 和 returns 一个元组,第一个元素是 str 类型。以下示例具有相同的行为,但假设实际功能更复杂并且不能轻易一分为二:
def get_stuff(x):
return str(5*x),float(3*x)
我想要的是构建一个 dict,其 (key,value) 对是 get_stuff 在特定整数集上调用时的结果。一种方法是:
def get_the_dict(set_of_integers):
result = {}
for i in set_of_integers:
k,v = get_stuff(i)
result[k] = v
return result
我宁愿为此使用字典理解,但我不知道是否可以在理解中拆分对以分别捕获键和值。
def get_the_dict_with_comprehension(set_of_integers):
return {get_stuff(i) for i in set_of_integers} #of course this doesn't work
我怎样才能做到这一点?
你可以这样做,不完全是字典理解:
dict(get_stuff(i) for i in range(10))
如果你真的想使用dict
理解,你可以这样做:
{k: v for k, v in [get_stuff(i) for i in set_of_integers]}
除了推导式之外,您还可以使用 get_stuff
:
dict
构造函数
dict(map(get_stuff, set_of_integers))