Skip to main content
 首页 » 编程设计

python之从词典列表到词典

2025年05月04日10kenshinobiy

我的功能有问题。

我执行一个 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)