Python Dictionary - 查找值等于的min键

时间:2014-12-01 15:53:41

标签: python python-2.7

我有一个词典我想找到值[1]等于指定字符串的最小键。

somedict = {'1': ['110', 'A'], '3': ['1', 'A'], '2': ['3', 'B'], '4': ['1', 'B']}
mindict = min(somedict.iteritems(), key=itemgetter(0) )

这给了我('1', ['110', 'A'])

我想通过找到值为'B'

的min键来进一步过滤

给我结果('2', ['3', 'B'])

怎么会这样呢?

1 个答案:

答案 0 :(得分:4)

首先使用生成器表达式过滤项目:

min((i for i in somedict.iteritems() if i[1][-1] == 'B'), key=itemgetter(0))

生成器表达式从somedict.iteritems()生成元素,其中值的最后一个条目等于'B'

请注意,此处存在与您的过滤器不匹配的项目的风险!如果可能是这种情况,请确保在传递空序列时捕获ValueError引发的min()。如果您使用的是Python 3.4或更高版本,则可以指定为该情况返回的默认值:

min((i for i in somedict.iteritems() if i[1][-1] == 'B'),
    key=itemgetter(0), default=())

如果没有项目的值中有最后一个条目'B',则返回空元组。

演示:

>>> from operator import itemgetter
>>> somedict = {'1': ['110', 'A'], '3': ['1', 'A'], '2': ['3', 'B'], '4': ['1', 'B']}
>>> min((i for i in somedict.iteritems() if i[1][-1] == 'B'), key=itemgetter(0))
('2', ['3', 'B'])