gpt4 book ai didi

用于两个嵌套 for 循环的 python 一个类轮代码

转载 作者:行者123 更新时间:2023-11-28 16:37:46 24 4
gpt4 key购买 nike

如何在 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一个不成功一个liner:

[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()}

严格来说,这会用“”替换任何看起来像 bool 值 False 的东西。

如果我们只想将 None 值替换为 "",例如False0 保持原样,我们将更严格:

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

关于用于两个嵌套 for 循环的 python 一个类轮代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23663717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com