我有一本字典,我想找到 value[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”的最小键来进一步过滤此内容
给我结果('2', ['3', 'B'])
如何解决这个问题?
最佳答案
首先使用生成器表达式过滤您的项目:
min((i for i in somedict.iteritems() if i[1][-1] == 'B'), key=itemgetter(0))
生成器表达式从 somedict.iteritems()
生成元素,其中值中的最后一个条目等于 'B'
。
请注意,这里存在没有项目符合您的过滤器的风险!如果是这种情况,请确保在传递空序列时捕获 min()
抛出的 ValueError
。如果您使用的是 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'])
关于Python 字典 - 查找值等于的最小键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27232104/