Проверка, находится ли значение в словаре Python ниже порогового значения, чтобы увеличить значение в другом словаре - PullRequest
0 голосов
/ 17 октября 2018

У меня есть someDictionary, похожий на этот

{'1': 0.0011, '2': 0.1100, '3': 0.0123, '4': 0.0002}

Кроме того, masterDictionary со значениями, изначально установленными в 0

{'1': 0, '2': 0, '3': 0, '4': 0}

Если я создаю порог

threshold = 0.01

Я хотел бы проверить каждое значение в someDictionary и определить, является ли оно <= threshold, если это так, я хотел бы увеличить значение (с тем же ключом) в masterDictionary на 1.

I 'я собираюсь сделать это с несколькими «некоторыми словарями», и ключи не всегда будут в последовательном порядке;поэтому я не могу предположить, что первый ключ, значение в someDictionary всегда будет отображаться в '1' в masterDictionary и т. д.

Итак, после проверки каждого элемента в someDictionary, masterDictionary будет выглядеть как

{'1': 1, '2': 0, '3': 0, '4': 1}

Ответы [ 3 ]

0 голосов
/ 17 октября 2018

Вот еще один дубль без необходимости инициировать Dictionary:

from collections import defaultdict

t = defaultdict(int) # <- this will be our master.
d = {'1': 0.0011, '2': 0.1100, '3': 0.0123, '4': 0.0002}

threshold = 0.01

for k,v in d.items():
    t[k] += int(v <= threshold)
0 голосов
/ 17 октября 2018

Вы можете перебирать ключи словаря, так как ключи кажутся идентичными между masterDictionary и someDictionaries.

for key in  masterDictionary.keys():
    if someDictionary[key] <= threshold:
        masterDictionary[key] = 1

Это может дать вам искомый результат, но только еслиключи одинаковы во всех словарях, но они не должны быть в том же порядке.Когда вы перебираете ключи в словаре с помощью этого метода, вы получаете сам ярлык, а не индекс, поэтому порядок ключей не имеет значения.

0 голосов
/ 17 октября 2018

Вы можете сделать что-то вроде этого:

someDictionary = {'1': 0.0011, '2': 0.1100, '3': 0.0123, '4': 0.0002}
masterDictionary = {'1': 0, '2': 0, '3': 0, '4': 0}
threshold = 0.01

for k, v in someDictionary.items():
    if v <= threshold:
        masterDictionary[k] += 1

print(masterDictionary)

Вывод

{'4': 1, '1': 1, '2': 0, '3': 0}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...