Каков эквивалент карты <интервал, вектор <интервал>> в Python?

Приложение Create React использует Jest в качестве своей тестовой среды. Функция it принимает строку в качестве дескриптора, который позволяет пользователю назвать свои тесты и легко найти их в случае сбоя. Функция стрелки - это фактический тестовый код. Пример:

function add(x,y){
    return x+y;
}

it("adds two and two", ()=> {
    expect(add(2,2)).toEqual(4);
}

9
задан Jeroen Dirks 28 November 2008 в 13:57
поделиться

5 ответов

Вы хотите использовать:

from collections import defaultdict
myIndex = defaultdict(list)
myIndex[someId].append(someVal)

Стандартная библиотека defaultdict объекты.

Использование в качестве примера из документации Python:

>>> s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
>>> d = defaultdict(list)
>>> for k, v in s:
        d[k].append(v)

>>> d.items()
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
15
ответ дан 4 December 2019 в 07:49
поделиться

Только завершить ответ Alastair: существует также становление эквивалентным из setdefault, который называют, добираются (и не getdefault, как можно было бы думать):

myIndex = {}
someId = None
myList = myIndex.get(someId, []) # myList is [] now
2
ответ дан 4 December 2019 в 07:49
поделиться

Что-то вроде этого, возможно:

myIndex = {}
for (someId,someVal) in collection:
    myIndex.setdefault(someId, []).append(someVal)
10
ответ дан 4 December 2019 в 07:49
поделиться

Из Python 2.5 и на Вас может получить поведение setdefault или использующий defaultdict путем реализации

__missing__(k)

как в примечании 10 здесь.

1
ответ дан 4 December 2019 в 07:49
поделиться

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

myIndex = {}

for (someId,someVal) in collection:
   if someId not in myIndex:
       myIndex[someId] = []
   myIndex[someId].append(someVal)
0
ответ дан 4 December 2019 в 07:49
поделиться
Другие вопросы по тегам:

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