我的代码有问题
s1 = ({'server_id':'myserver1','cloud':'google','time':'1hr'},
{'server_id':'myserver2','cloud':'aws','time':'2hr'},
{'server_id':'myserver3','cloud':'google','time':'1hr'}
{'server_id':'myserver4','cloud':'aws','time':'3hr'})
mydict = {'mine':
{data[i]:
{key:value for key,value in data.iteritems() if key!='cloud'}
for data in s1 for i in data if i=='cloud'}}
print mydict
结果:
{'mine': {'aws': {'server_id': 'myserver3','time':'3hr'}}}
但我期待这样的结果
{'mine':
{'aws':
{'server_id': 'myserver1','time':'1hr'},
{'server_id': 'myserver3','time':'3hr'}},
{
'google':
{'server_id': 'myserver2','time':'2hr'},
{'server_id': 'myserver4','time':'4hr'}}}
有人能帮我吗?你知道吗
考虑初始化字典并将其附加到循环中。使用
dict.pop
可以省去cloud
键,而不必像现在这样迭代整个过程。你知道吗免责声明!这会修改
s1
(子目录发生变化,pop
,如果存在,则返回该键的值。你知道吗要处理keyrerrors,可以提供一个合适的默认值-
s.pop('cloud', 'default')
,其中default
是当cloud
键不存在时返回的值。你知道吗问题是您正在尝试将三个字典映射到同一个键。如果你把它列为一个字典列表,它就行了。你知道吗
输出:
相关问题 更多 >
编程相关推荐