将字典值转换为具有特定ord的字符串对象

2024-06-28 19:00:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个函数,将一个字典的地址值转换成一个字符串值与特定的顺序。我还需要考虑丢失的值(有些地址不会有第二或第三个地址行)。我希望我的输出如下所示,这样我就可以复制文本块,由一个新行分隔,到一个数据库字段。你知道吗

name
contact
addr1
addr2 (if not empty)
addr3 (if not empty)
city, state zip
phone

我有以下方法来创建字典,但是我一直坚持创建忽略空值并将所有内容按正确顺序排列的string对象。你知道吗

def setShippingAddr(name, contact, addr1, addr2, addr3, city, state, zipCode, phone):
    addDict = {'name': name, 'contact': contact, 'addr1': addr1,
               'city': city, 'state': state, 'zip': zipCode, 'phone': phone}
    if addr2 is True:    # append dict if addr2/addr 3 are True
        addDict['addr2'] = addr2
    if addr3 is True:
        addDict['addr3'] = addr3

    shAddr =     # This is where i need to create the string object
    return shAddr

Tags: nametruecityif字典is地址not
3条回答

考虑到你可能想在字典里添加新词条

def setShippingAddr(name, contact, addr1, addr2, addr3, city, state, zipCode, phone):
    addDict = {'name': name, 'contact': contact, 'addr1': addr1,
               'city': city, 'state': state, 'zip': zipCode, 'phone': phone}
    if addr2 is True:    # append dict if addr2/addr 3 are True
        addDict['addr2'] = addr2
    if addr3 is True:
        addDict['addr3'] = addr3

    shAddr = ''
    for key in addDict:
      shAddr += addDict[key] + '\n'
    return shAddr

我会重写函数只返回字符串,字典不需要:

def setShippingAddr(name, contact, addr1, city, state, zipCode, phone, addr2=None, addr3=None):
    shAddr = f'{name}\n{contact}\n{addr1}'
    shAddr = f'{shAddr}\n{addr2}' if addr2 else shAddr
    shAddr = f'{shAddr}\n{addr3}' if addr3 else shAddr
    shAddr = f'{shAddr}\n{city}, {state} {zipCode}\n{phone}'
    return shAddr

看起来(假设您使用的是python3),f字符串在这里可以工作。你知道吗

shAddr = f"{addDict['name']} {addDict['contract'] etc..."

您可以在{}中添加逻辑,例如

{addDict['addr2'] if addDict['addr2'] else ""}

应该工作,这取决于你要找的具体输出是什么。你知道吗

相关问题 更多 >