Реагировать массив сопоставления из Express API

Один классический подход к этой проблеме - использовать «украшать, сортировать, дебекорировать» идиому, что особенно просто с использованием встроенной функции zip на основе python:

>>> list1 = [3,2,4,1, 1]
>>> list2 = ['three', 'two', 'four', 'one', 'one2']
>>> list1, list2 = zip(*sorted(zip(list1, list2)))
>>> list1
(1, 1, 2, 3, 4)
>>> list2 
('one', 'one2', 'two', 'three', 'four')

Это, конечно, больше нет списков, но это легко исправить, если это имеет значение:

>>> list1, list2 = (list(t) for t in zip(*sorted(zip(list1, list2))))
>>> list1
[1, 1, 2, 3, 4]
>>> list2
['one', 'one2', 'two', 'three', 'four']

Стоит отметить, что вышеизложенное может пожертвовать скоростью для терпения; версия на месте, которая занимает 3 строки, немного медленнее на моей машине для небольших списков:

>>> %timeit zip(*sorted(zip(list1, list2)))
100000 loops, best of 3: 3.3 us per loop
>>> %timeit tups = zip(list1, list2); tups.sort(); zip(*tups)
100000 loops, best of 3: 2.84 us per loop

С другой стороны, для больших списков однострочная версия может быть быстрее :

>>> %timeit zip(*sorted(zip(list1, list2)))
100 loops, best of 3: 8.09 ms per loop
>>> %timeit tups = zip(list1, list2); tups.sort(); zip(*tups)
100 loops, best of 3: 8.51 ms per loop

Как указывает Quantum7, предложение JSF немного быстрее, но, вероятно, это будет только немного быстрее, потому что Python использует очень ту же внутреннюю идентификацию DSU для всех видов на основе ключей. Это просто немного ближе к голым металлам. (Это показывает, насколько хорошо оптимизированы подпрограммы zip!) [/ ​​G6]

Я думаю, что подход на основе zip более гибкий и немного читаем, поэтому я предпочитаю его.

0
задан PringlerRushing 18 January 2019 в 04:48
поделиться

1 ответ

Код, который у вас есть, по большей части является правильным, похоже, вам нужно только добавить вложенный массив к значению по умолчанию:

constructor(props) {
    super(props);
    this.state = {
         selectedWeek: 1,
         selectedSeason: 2015,
         scoreData:[ [] ], // <--- this right here
    };
}

Или альтернативно установить scoreData во вложенный массив [ 113]

0
ответ дан Maroshii 18 January 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: