2016-07-20 3 views
0

Мой ДИКТ:поиска для конкретного элемента по умолчанию в словаре Пайтона

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)

+0

122.5 или общий элемент появляется на «expiry_strike» – DPatel

+0

, если это так, то я хочу добавить элементы, соответствующие 122.5, в «expiry_value» и предпочтительно создать новый список или обновить существующий – DPatel

+0

@Dan im застрял в создании если цикл. Каким-то образом его съемки случайных выходов – DPatel

ответ

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().