首页 > 解决方案 > 字典分解并创建具有相同值的新字典

问题描述

我有一本字典myDict

{'1': 5, '2': 13, '3': 23, '4': 17}

我正在使用这段代码,这对我很有帮助,以便找到myDict最接近的键/值targetVal

answer = key, value = min(myDict.items(), key=lambda (_, v): abs(v - targetVal))

假设targetVal,返回14answer

('2': 13)

我现在需要做的是处理myDict. 例如,如果myDict是现在:

{'1': 5, '2': 13, '3': 23, '4': 13}

我需要那些带有 value 的键/值对13。如果代码(上面)在 中找到最接近的值myDict,并且该值恰好出现不止一次,我想创建一个新字典。在这种情况下,answer将返回:

{'2': 13, '4': 13}

answer当最接近的值出现不止一次时,是否可以更新发现的方式来解释实例?

标签: pythonpython-2.7dictionarypython-2.x

解决方案


首先找到最小值,然后过滤您的dict.

>>> d = {'1': 5, '2': 13, '3': 23, '4': 13}
>>> target = 13
>>> min_ = min(d.itervalues(), key=lambda v: abs(v - target))
>>> {k:v for k,v in d.iteritems() if v == min_}
{'2': 13, '4': 13}

推荐阅读