在默认字典PYTHOn中搜索特定元素

时间:2016-07-20 17:38:46

标签: python loops defaultdict

我的字典:

expiry_strike = defaultdict(<type 'list'>, {'2014-02-21': [122.5], '2014-01-24': [123.5, 122.5, 119.0, 123.0]})
expiry_value = defaultdict(<type 'list'>, {'2014-02-21': [-100], '2014-01-24': [-200, 200, 1200, 200]})

我的问题:

我想运行一个循环 找到公共元素并在expiry_strike(在这种情况下为122.5),

如果找到共同元素,

然后我想在expiry_value中添加值。 (这里我要添加-100 + 200)

1 个答案:

答案 0 :(得分:1)

我将向您展示如何找到最常见的元素,其余的应该自己处理。

这个名为collections的好库有一个Counter类。它对可迭代中的每个元素进行计数,并将它们存储在字典中,其中键是项,值是计数。

from collections import Counter

expiry_strike = {'2014-02-21': [122.5], '2014-01-24': [123.5, 122.5, 119.0, 123.0]}

for values in expiry_strike.values():
    counts = Counter(values)
    print max(counts , key=lambda x: counts[x])

    # key=lambda x: counts[x] says to the max function
    # to use the values(which are the counts) in the Counter to find the max,
    # rather then the keys itself.
    # Don't confuse these values with the values in expiry_strike

这会找到expiry_strike中所有不同键的最常见元素。如果您想使用expiry_strike中的所有值找到最常见的元素,则必须合并expiry_strike.values()中的列表。