выбор значений словаря, соответствующих ключу - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть словарь типа -

{
 'a': [0, 0, 0, 1, 1, 1],
 'diff': [-3.654748632042965, -3.97342251742816, -4.010696955187965, -6.3903113605617685, -6.310284875983931, -4.0363808384515005],
 'b': [-1, 0, 1, -1, 0, 1]
}

Я хочу выбрать значения a и b, соответствующие минимальному значению 'diff', которое в этом случае должно быть [1, -1], соответствующее -6,3903. Я новичок в Python и не могу понять это!

Ответы [ 4 ]

0 голосов
/ 09 ноября 2018

Вы можете использовать min с zip распаковкой:

from operator import itemgetter

a, diff_min, b = min(zip(*itemgetter('a', 'diff', 'b')(d)), key=itemgetter(1))

print(a, diff_min, b)

1 -6.3903113605617685 -1
0 голосов
/ 09 ноября 2018

используйте min, чтобы найти минимум списка, а затем index, чтобы найти индекс минимального элемента, а затем возьмите элементы соответствующего индекса из a и b

.
d={'a': [0, 0, 0, 1, 1, 1], 'diff': [-3.654748632042965, -3.97342251742816, -4.010696955187965, -6.3903113605617685, -6.310284875983931, -4.0363808384515005], 'b': [-1, 0, 1, -1, 0, 1]}
a=d['a']
b=d['b']
diff=d['diff']
index=diff.index(min(diff))
print([a[index],b[index]])

OUTPUT

[1, -1]
0 голосов
/ 09 ноября 2018

Это очень просто, если вы знаете, как обращаться со словарем. Это мой пример кода на Python:

def diff(dict):
    min = 0
    position = 0
    for index in range(len(dict["diff"])):
        checkValue = dict["diff"][index]
        if (checkValue < min):
            min = checkValue
            position = index
    print([dict["a"][position],dict["b"][position]])

Тест:

diff({'a': [0, 0, 0, 1, 1, 1], 'diff': [-3.654748632042965, -3.97342251742816, -4.010696955187965, -6.3903113605617685, -6.310284875983931, -4.0363808384515005], 'b': [-1, 0, 1, -1, 0, 1]})

Выход:

[1, -1]

0 голосов
/ 09 ноября 2018

Вы можете сделать это, используя numpy.argmin ()

import numpy as np

d = {'a': [0, 0, 0, 1, 1, 1], 'diff': [-3.654748632042965, -3.97342251742816, -4.010696955187965, -6.3903113605617685, -6.310284875983931, -4.0363808384515005], 'b': [-1, 0, 1, -1, 0, 1]}

ind = np.argmin(d["diff"])

a = d["a"][ind]
b = d["b"][ind]

print([a, b])

OUT:

[1, -1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...