python中两个for循环嵌套,python一班轮代码为两个嵌套的for循环

如何在python One Liner中获得所需结果?

object_list=[{'applicationName': "ATM Monitoring",

'roamingDrop': "",

'noOfCustomer': None,

'ipAddress': "192.168.1.1",

'url': "www.google.co.in",},

{'applicationName': None,

'roamingDrop': "",

'noOfCustomer': None,

'ipAddress': "192.168.1.1",

'url': "www.google.co.in",}]

所需结果是将所有None都替换为“”

object_list=[{'applicationName': "ATM Monitoring",

'roamingDrop': "",

'noOfCustomer': "",

'ipAddress': "192.168.1.1",

'url': "www.google.co.in",},

{'applicationName': "",

'roamingDrop': "",

'noOfCustomer': "",

'ipAddress': "192.168.1.1",

'url': "www.google.co.in",}]

实现此目的的简单函数是:

def simple():

for object in object_list:

for key, value in object.iteritems():

if value:

dict( object, **{key: value})

else:

dict(object, **{key: ''})

和Python一不成功的一班轮:

[dict(object, **{key: value}) if value else dict(object, **{key: ''})

for object in object_list for key, value in object.iteritems()]

名单理解能力能否达到目标?

解决方法:

lst=[{'applicationName': "ATM Monitoring",

'roamingDrop': "",

'noOfCustomer': None,

'ipAddress': "192.168.1.1",

'url': "www.google.co.in",},

{'applicationName': None,

'roamingDrop': "",

'noOfCustomer': None,

'ipAddress': "192.168.1.1",

'url': "www.google.co.in",}]

print [{key: val if val else "" for key, val in dct.items()} for dct in lst]

解释:

dct = lst[0]

{'applicationName': "ATM Monitoring",

'roamingDrop': "",

'noOfCustomer': None,

'ipAddress': "192.168.1.1",

'url': "www.google.co.in",}

使用字典理解(自Python 2.7起可用),首先只需将字典重构为相同的值即可:

{key: val for dct.items()}

并通过分配“”扩展它,以防万一,我们拥有原始值None(或其他任何值为False的值)

{key: val if val else "" for dct.items()}

最后(如上所示)将其应用于包围列表的列表中的所有项目.

{key: val for dct.items()}

严格来说,这会替换任何东西,用“”代替布尔False.

如果我们只想将None值替换为“”,例如False和0保持原样,我们将更加严格:

print [{key: val if val is not None else "" for key, val in dct.items()} for dct in lst]

标签:python-2-7,python

来源: https://codeday.me/bug/20191121/2054038.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值