我的功能有问题。
我执行一个 SQL 查询来获取一个列表,该列表包含一些只有键/值元素的字典。 这是我的输出示例:
myDictList = [{'id': 55, 'sigla': 'SNG'}, {'id': 62, 'sigla': 'TRP'},
{'id': 71, 'sigla': 'PCNIM'}, {'id': 72, 'sigla': 'pc2ni'},
{'id': 73, 'sigla': 'ccas'}, {'id': 74, 'sigla': 'ased1'},
{'id': 75, 'sigla': '131s'}, {'id': 76, 'sigla': 'r888'},
{'id': 56, 'sigla': 'DBL'}]
id 是唯一的(对于 SQL 约束)。
我已经用这种方式构建了一个 id 列表
r_id_list = list(rid['id'] for rid in roomList)
现在,我要构建一个字典。就像 myDictList 中的那样:
{55:'SNG',62:'TRP',71:'PCNIM'.... and so on}
此外,我想避免这样的部分代码:
finalDict = {}
for element in myDictList:
finalDict.update({element['id']:element['sigla']})
出于某些原因我想这样做:
- 我不想做两个单独的查询来获得一些我可以用一个检索的数据
- 我不想遍历每个列表元素以从
r_id_list元素中检索sigla值
一些关于紧凑代码的建议,该代码不会在 for 循环中包含 for 循环,并增加复杂性?
请您参考如下方法:
finalDict = dict([(k['id'], k['sigla']) for k in myDictList])
编辑1 如评论所述,这将是一种更好的方法。
finalDict = dict(((k['id'], k['sigla']) for k in myDictList))
EDIT2
finalDict = dict((k['id'], k['sigla']) for k in myDictList)
