连接 python 中可能存在也可能不存在的字典键

Concatenating dictionary keys in python that may or may not exist

我有一个经过解析的字符串,并将段加载到字典中。根据字符串的不同,某些键可能存在也可能不存在。然后我想通过连接字典中的特定键来创建一个新字符串。我遇到了困难,因为某些键可能不存在。我不想要一堆乱七八糟的 if 语句,所以我试图在连接中使用三元运算符,但它不起作用:

title = (name['title'], name['key1'] + (name['key2'] if name['key2'] else ''), name['key3'])
return ' '.join(title)

当密钥不存在时,我得到 KeyError: 'key3'。我想是因为它在检查密钥是否存在之前正在读取密钥。我也试过:

title = (name['title'], name['key1'] + (if name['key2']: name['key2']), name['key3'])

但它甚至不会 运行 因为语法。我现在只是想让一把钥匙工作,但会有更多的钥匙需要有条件地连接起来,所以我试图找到一种干净的方法来做到这一点。有什么想法吗?

为什么不使用'get'方法呢?如果 keyX 不是键,name.get('keyX', '') 将 return ''。所以你的代码变成:

title = (name['title'], name['key1'] + (name.get('key2', ''), name.get('key3', ''))
return ' '.join(title)

你可以测试key2是否在names.keys()中,这样就不会显示错误

title = (name['title'], name['key1'] + (name['key2'] if 'key2' in name.keys() else ''), name['key3'])
title = [name.get(key, '') for key in needed_keys]

你可以试试这个,只需要提供密钥列表