社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python将dict中的值合并为新的键/值对,用空字符串替换none

DBA108642 • 4 年前 • 721 次点击  

我有一本这样的字典:

d = { 
'[primary_number]': '12345', 
'[street_name]': 'Main', 
'[street_predirection]': 'NW', 
'[street_postdirection]': None, 
'[street_suffix]': 'St', 
'[secondary_number]': None, 
'[secondary_designator]': None, 
'[extra_secondary_number]': None,
'[zipcode]': '12345'
}

我想创建一个名为addressstr的新键/值对,它组合了d中的几个(但不是全部)字段。我正在尝试将它与以下代码组合起来:

d['AddressStr'] = d["[zipcode]"] + \
    d["[street_name]"] + \
    d["[primary_number]"] + \
    d["[secondary_number]"] + \
    d["[street_predirection]"] + \
    d["[street_postdirection]"] + \
    d["[street_suffix]"]

但是,这会产生错误:

can only concatenate str (not "NoneType") to str

因为 [street_postdirection] = None 是的。理想情况下,我只想选中/替换这7个字段中的none值 '' ,但我不太确定该怎么做。我也希望在 d['AddressStr'] ,但如果不可能的话,我同意。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/47101
 
721 次点击  
文章 [ 2 ]  |  最新文章 4 年前
Bruno Portugal
Reply   •   1 楼
Bruno Portugal    4 年前

您可以使用str()方法并使用在布尔检查中“无”行为为false的属性:

d['AddressStr'] = str(d["[zipcode]"] or '') + \
str(d["[street_name]"] or '') + \
str(d["[primary_number]"] or '') + \
str(d["[secondary_number]"] or '') + \
str(d["[street_predirection]"] or '') + \
str(d["[street_postdirection]"] or '') + \
str(d["[street_suffix]"] or '')
Thierry Lathuille
Reply   •   2 楼
Thierry Lathuille    4 年前

你可以 join 不是 None 以下内容:

keys = ["[zipcode]", "[street_name]", "[primary_number]",
        "[secondary_number]", "[street_predirection]", "[street_postdirection]",
        "[street_suffix]"]

d['AddressStr'] = ' '.join([d[key] for key in keys if d[key] is not None])