连接 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]
你可以试试这个,只需要提供密钥列表
我有一个经过解析的字符串,并将段加载到字典中。根据字符串的不同,某些键可能存在也可能不存在。然后我想通过连接字典中的特定键来创建一个新字符串。我遇到了困难,因为某些键可能不存在。我不想要一堆乱七八糟的 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]
你可以试试这个,只需要提供密钥列表