在Python中,我有一个字典列表:
mylist = [ { 'name': 'James', 'school': 'UCLA', 'date_joined': 2001 },
{ 'name': 'Jack', 'school': 'UCLA', 'date_joined': 2001 },
{ 'name': 'Fisher', 'school': 'NYU', 'date_joined': 2003 }]
我如何检查某个字典是否与现有记录匹配,只基于名称和学校密钥/值?在
所以:
^{pr2}$两者应该匹配,但是
example3 = { 'name': 'James', 'school': 'MIT', date_joined': 2001 }
不应该。在
显然有:
for m in myList:
if (m['name']==example['name'] and m['school']==example['school']):
match_found = True
continue
但是有没有更紧凑的方法呢?在
对你的程序结构一无所知,我的方法可能有些不同:
对于非常小的学生名单来说,这会比较慢,因为每年都要检查,但是对于成千上万的学生名单,没有一个是1950年以前入学的,这个速度会快得多。年数是O(n),而列表法是学生数的O(n),年数的增长可能比学生数慢得多。(它确实要求没有记录是完全相同的,但是无论如何,您可能希望这样做。或者,您可以始终使用列表dict而不是set来处理冲突。)
此外,对于真正的恒定时间算法,您可以使用一个年份列表来列出多个相同的学生列表,这也解决了冲突问题:
^{pr2}$相关问题 更多 >
编程相关推荐