Python 字典 - 查找值等于的最小键

标签 python python-2.7

我有一本字典,我想找到 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/

相关文章:

python - Pandas 时间序列重新采样结束给定的一天

python - 使用 Scikit learn 时出现 ValueError。模型的特征数量与输入的特征数量不匹配

python - 从 jupyter 执行 Google Cloud Shell 命令

python - 从其他函数传递值和调用函数

DjangoRestFramework 类序列化程序缺少 "Meta"属性?

python - 基于公共(public) key 整理一组 CSV 的最 Python-ic 方式?

python - 从 pip 安装时获取 git 提交编号和日期

python - 如何在 python scrapy 中检查 item 是否为 None

Python/Django 2.0/Bootstrap3 : Retrieving data from db based on form inputs using Django

python-2.7 - 如何选择将在 Ubuntu 16.04 上打开的 Python Spyder 版本?