我有一个api调用,它返回一个字典,其中包含所有用户的所有id 以及其他人,如:
>>> allIds=api.getAllIds()
{1,2,3,4,5}
>>> userDetails=api.getUserDetails(1)
{'name':'Bob','age':'19'}
我试图用userId
类键和类似info的值将整个结构打包到dict中。在
我可以使用:
^{pr2}$问题是并不是所有的id都会像您看到的id 2调用那样返回响应。我试着不使用传统循环,我正在解决这样的情况:在调用后清理结果dict
:
>>> users=[id:users[id] for id in users.keys() if users[id]!=None]
它是有效的,但我尽量不把空值放进去,而不是清理。在正常情况下,您可以创建如下dict:
>>> a=[id:b[id] for id in b.keys() if b[id]!=None ]
但在我的例子中,如果我检查b[i]
是否为空。。。然后我调用api两次,因为我的b[i]
表达式是api.getUserDetails(id)
,一个用来获取值,另一个用来检查是否不是None。在
所以我在尝试类似嵌套字典理解的方法:
users = {(x,y) for x in usersIds for y in api.getUserDetails(x) if y!=None }
但我做不到。在
有人知道怎么做吗?在
可以将api调用的结果放入单例元组中:
演示:
^{pr2}$但是,为这样的方法设置嵌套循环是非常浪费的,而且使用普通的
for
循环来构建字典可能更具可读性:相关问题 更多 >
编程相关推荐