Как отобразить элемент массива с помощью pyDash в Python
Я пытаюсь связать и сгруппировать, чем сопоставить массив с помощью pydash
Идея состоит в том, чтобы воссоздать тот же вывод этой функции lodash:
let chainedResult = (
_.chain(oResult)
// Group the elements of the result based on `CEMPLOYEE` property
.groupBy("CCALENDAR_WEEK")
// `key` is group's name (CEMPLOYEE), `value` is the array of objects
.map((value, key) => ({
WEEK: key,
Capacity: value
}))
).value();
Пока это то, чего я добился
_.chain(empCapacity).group_by(lambda dt:dt["CCALENDAR_WEEK"]).value()
Я застрял здесь, как сделать сопоставление ключей и значения? Как сделать приведенный ниже код на Python с помощью pydash?
.map((value, key) => ({
WEEK: key,
Capacity: value
}))
Желаемый результат:
1 ответ
Вы пробовали просто использовать? В документах говорится :
Итерация вызывается с тремя аргументами: (значение, индекс | ключ, коллекция).
Потому что, похоже, это скопировано прямо из документов lodash. В python достаточно умен, чтобы проверить подпись «итератора» (то есть функцию, которую вы передаете
.map()
), иначе это приведет к сбою, поскольку в python вы не можете передавать дополнительные аргументы функции, которая их не ожидает.
Так что это работает для меня:
from pydash import py_
my_entries = [
{'name': 'barney', 'food': 'jelly'},
{'name': 'bill', 'food': 'jelly'},
{'name': 'buster', 'food': 'aubergine'},
]
(
py_(my_entries)
.group_by('food')
.map(lambda value, key: (key, value))
).value()
Дает:
[
(
'jelly',
[
{'name': 'barney', 'food': 'jelly'},
{'name': 'bill', 'food': 'jelly'},
]
),
(
'aubergine',
[
{'name': 'buster', 'food': 'aubergine'}
]
)
]