python 字典组成的列表如何搜索 ?
ringa_lee
ringa_lee 2017-04-18 09:54:25
0
2
653

如下列表,由字典组成,如何高效找到 u'NickName': u'小蜻蜓'的这个字典对象?一个一个遍历当然可以尝试,不过总觉得不太高效.数据量大的话,有什么高效的好办法?或者python有什么原生的方法?

[ { u'UserName': u'@27ed44102dd86ec42eb1a572b283b5b8', u'RemarkPYQuanPin': u'', u'DisplayName': u'', u'KeyWord': u'', u'PYInitial': u'', u'Uin': 112266535, u'RemarkPYInitial': u'', u'PYQuanPin': u'', u'MemberStatus': 0, u'NickName': u'一二三', u'AttrStatus': 2181050407L }, { u'UserName': u'@7a9e7af3a886a6c7d7219f0e017e5b586263de82e32300c267a78202118e7573', u'RemarkPYQuanPin': u'', u'DisplayName': u'', u'KeyWord': u'', u'PYInitial': u'', u'Uin': 22720082935L, u'RemarkPYInitial': u'', u'PYQuanPin': u'', u'MemberStatus': 0, u'NickName': u'天天', u'AttrStatus': 102469 }, { u'UserName': u'@886fe820eacd4899505b86469257f56be7f95e8a433109f85e23e12c27a575f6', u'RemarkPYQuanPin': u'', u'DisplayName': u'', u'KeyWord': u'', u'PYInitial': u'', u'Uin': 33135252892L, u'RemarkPYInitial': u'', u'PYQuanPin': u'', u'MemberStatus': 0, u'NickName': u'李金芬', u'AttrStatus': 4165 }, { u'UserName': u'@c5c563df9c089b12eeca1e68dd6745ebf8963092791efd3a17b0867ade949944', u'RemarkPYQuanPin': u'', u'DisplayName': u'', u'KeyWord': u'', u'PYInitial': u'', u'Uin': 402283062, u'RemarkPYInitial': u'', u'PYQuanPin': u'', u'MemberStatus': 0, u'NickName': u'小蜻蜓', u'AttrStatus': 4133 } ]
ringa_lee
ringa_lee

ringa_lee

모든 응답 (2)
PHPzhong

在你数据结构不该变的情况下,依然只能是遍历,只是Python可以写的很优雅,不用去写for循环:

# -*- coding: UTF-8 -* users = [ { u'UserName': u'@27ed44102dd86ec42eb1a572b283b5b8', u'RemarkPYQuanPin': u'', u'DisplayName': u'', u'KeyWord': u'', u'PYInitial': u'', u'Uin': 112266535, u'RemarkPYInitial': u'', u'PYQuanPin': u'', u'MemberStatus': 0, u'NickName': u'一二三', u'AttrStatus': 2181050407L }, { u'UserName': u'@7a9e7af3a886a6c7d7219f0e017e5b586263de82e32300c267a78202118e7573', u'RemarkPYQuanPin': u'', u'DisplayName': u'', u'KeyWord': u'', u'PYInitial': u'', u'Uin': 22720082935L, u'RemarkPYInitial': u'', u'PYQuanPin': u'', u'MemberStatus': 0, u'NickName': u'天天', u'AttrStatus': 102469 }, { u'UserName': u'@886fe820eacd4899505b86469257f56be7f95e8a433109f85e23e12c27a575f6', u'RemarkPYQuanPin': u'', u'DisplayName': u'', u'KeyWord': u'', u'PYInitial': u'', u'Uin': 33135252892L, u'RemarkPYInitial': u'', u'PYQuanPin': u'', u'MemberStatus': 0, u'NickName': u'李金芬', u'AttrStatus': 4165 }, { u'UserName': u'@c5c563df9c089b12eeca1e68dd6745ebf8963092791efd3a17b0867ade949944', u'RemarkPYQuanPin': u'', u'DisplayName': u'', u'KeyWord': u'', u'PYInitial': u'', u'Uin': 402283062, u'RemarkPYInitial': u'', u'PYQuanPin': u'', u'MemberStatus': 0, u'NickName': u'小蜻蜓', u'AttrStatus': 4133 } ] print filter(lambda x:x[u'NickName'] == u'小蜻蜓', users)

如果数据结构可以变的话,你可以做一个字典完成NickName到用户的映射,查找的时候直接通过NickName来获取用户(前提是NickName不能重复)。

实际生产过程中,看看有无可能把数据存到MongoDB里面去,对NickName做索引,速度也能上来了。

    伊谢尔伦

    这种情况很适合用 nosql吧,mongodb或者elasticsearch,

      최신 다운로드
      더>
      웹 효과
      웹사이트 소스 코드
      웹사이트 자료
      프론트엔드 템플릿
      회사 소개 부인 성명 Sitemap
      PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!