Python词典列表问题

Python词典列表问题,第1张

概述我有以下输入的词典列表: links = [ {'uid': 1, 'lid': 6, 'path': 'a1.txt', 'shareid': 1}, {'uid': 1, 'lid': 7, 'path': 'a2.txt', 'shareid': 2}, {'uid': 1, 'lid': 8, 'path': 'a1.txt', 'shareid': 1}] 我需要 我有以下输入的词典列表

links = [ {'uID': 1,'lID': 6,'path': 'a1.txt','shareID': 1},{'uID': 1,'lID': 7,'path': 'a2.txt','shareID': 2},'lID': 8,'shareID': 1}]

我需要生成此输出:

op = {'a1.txt': {'shareID': 1,'lID': [6,8]},'a2.txt': {'shareID': 2,'lID': [7]}         }

下面是我写的代码:

def List_all_links():       new_List = []       result = {}       for i in range(len(links)):           entry = links[i]    if not result.has_key(entry['path']):        new_entry = {}        lID_List = []        new_entry['shareID'] = entry['shareID']        if new_entry.has_key('lID'):            lID_List = new_entry['lID']            lID_List.append(entry['lID'])        else:            lID_List.append(entry['lID'])        new_entry['lID'] = lID_List        result[entry['path']] = new_entry    else:        new_entry = result[entry['path']]        lID_List = new_entry['lID']        if new_entry.has_key(entry['shareID']):            new_entry['shareID'] = entry['shareID']            lID_List = new_entry['lID']            lID_List.append(entry['lID'])            new_entry['lID'] = lID_List        else:            new_entry['shareID'] = entry['shareID']            lID_List.append(entry['lID'])            new_entry['lID'] = lID_List        result[entry['path']] = new_entryprint "result = %s" %resultif __name__ == '__main__':    List_all_links()

我能够根据需要生成相同的输出.但是,有人可以指出我是否有更好的方法来解决这个问题?

解决方法 你可以使用dict的setdefault方法来缩短它

links = [  {'uID': 1,'shareID': 1}]op = dict()for a in links:  op.setdefault(a['path'],{}).update(shareID=a['shareID'])  op[a['path']].setdefault('lID',[]).append(a['lID'])print op

输出:

{'a2.txt': {'lID': [7],'a1.txt': {'lID': [6,8],'shareID': 1}}
总结

以上是内存溢出为你收集整理的Python词典列表问题全部内容,希望文章能够帮你解决Python词典列表问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1196044.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存