В Python, как получить наименьшую пару ключ-значение в списке объектов / диктов, где каждый элемент имеет свою отдельную пару ключ-значение? - PullRequest
0 голосов
/ 07 февраля 2019

Я новичок в Python, поэтому есть некоторые вещи, к которым я привык в Java и C ++, но я не уверен, как это сделать в Python.Одна из этих вещей - вернуть минимальное значение из массива / списка.Похоже, это работает со списками, которые не определены как диктовки, но, как вы можете видеть ниже, мой окончательный список вывода на самом деле является списком диктов, и я не уверен, как это сделать.

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

У меня уже естьпопытался изменить вывод с list на defaultdict(list) и изменить способ добавления значений к нему, но это привело к нежелательному выводу.Единственный метод, который, кажется, работает, который соединяет два выходных сигнала, которые я хочу, - это добавить элемент в формате: {key: value} в список, а затем попытаться отсортировать список по значению в порядке убывания, а затем выбрать первый;и, к сожалению, я даже не могу понять, как это сделать, потому что кажется, что индексирование в python отличается.

У меня есть функция, которая выглядит следующим образом:

def getnumdistance(q, r)
  #gets numerical distance between two vectors from a csv file

def comparetotrain(testexample, trainlist):
  distancelist = []
  for example in trainlist:
    for key, value in example.items():
      if (key == "Class"):
        distancelist.append({
          value: getnumdistance(testexample, example)
          })
  return distancelist

, которая выводитсписок вещей, которые выглядят следующим образом:

[{'High': 5.314132102234569},
{'MidHigh': 8.029701115234614},
{'Low': 24.002408212510677},
...
{'MidHigh': 0.0}
...
{'High': 9.20044020685967},
{'LowMid': 22.120942565813056}]

И я хочу вывести только минимальное значение из distancelist[], потому что я планирую использовать только это, чтобы проверить мою частоту появления ошибок (в данном случае, {MidHigh: 0.0}).

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

Пожалуйста, помогите, если можете.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Используйте min(), чтобы найти минимум списка с его параметром key, определяющим, на каком основании вам нужно оценить минимум:

lst = [{'High': 5.314132102234569},
{'MidHigh': 8.029701115234614},
{'Low': 24.002408212510677},
{'MidHigh': 0.0},
{'High': 9.20044020685967},
{'LowMid': 22.120942565813056}]

print(min(lst, key=lambda x: list(x.values())))
# {'MidHigh': 0.0}
0 голосов
/ 07 февраля 2019
my_list = [{'High': 5.314132102234569},
{'MidHigh': 8.029701115234614},
{'Low': 24.002408212510677},
{'MidHigh': 0.0},
{'High': 9.20044020685967},
{'LowMid': 22.120942565813056}]

sorted(my_list,key=lambda x:list(x.values())[0])

Это позволит отсортировать список.

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