我的命令是:
rec_Dict = {'000000000500test.0010': -103,
'000000000500test.0012': -104,
'000000000501test.0015': -105,
'000000000501test.0017': -106}
我知道如何找到最大值:
>>print 'max:' + str(max(recB_Dict.iteritems(), key=operator.itemgetter(1)))
max:(u'000000000500test.0010', -103)`
但我想找到以'000000000501test'
开头的密钥,但不包括'000000000501test.0015'
或任何以'000000000500test'
开头的密钥。
它应该打印如下:
max:(u'000000000501test.0015', -105)`
如何使用关键字来获取?
答案 0 :(得分:1)
我无法理解您想要过滤密钥的条件,但您可以使用以下脚本(只需修复条件)
advance() {
this.router.navigate([`../${this.curStep + 1}`], { relativeTo: this.route });
}
答案 1 :(得分:1)
分离责任以获得最终结果,您可以根据您想要匹配的内容找到最大值。然后使用该最大值,只输出该值。当然,有些人会认为它不是最优化的,或者不是最功能的方式。但是,就个人而言,它工作正常,并以足够好的性能达到效果。此外,使其更易读,更容易测试。
max_key_substr = max(i.split('.')[0] for i in rec_Dict)
max_key_substr
迭代并输出键/值对:for key, value in rec_Dict.items():
if max_key_substr in key:
print(key, value)
输出将是:
000000000501test.0015 -105
000000000501test.0017 -106
答案 2 :(得分:1)
你说它应该打印得像是没有意义的,因为根据你所说的其他事情,键'000000000501test.0015'
应该被排除在外。
忽略这一点,您可以使用generator expression来筛选出您不想处理的项目:
from operator import itemgetter
rec_Dict = {'000000000500test.0010': -103,
'000000000500test.0012': -104,
'000000000501test.0015': -105,
'000000000501test.0017': -106}
def get_max(items):
def sift(record):
key, value = record
return key.startswith('000000000501') and not key.endswith('.0015')
max_record = max((item for item in items if sift(item)), key=itemgetter(1))
return max_record
print(get_max(rec_Dict.iteritems())) # -> ('000000000501test.0017', -106)