Разница между картой и диктоном

Я мог бы запутаться между hashmap в Java и map/dict в Python.
Я думал, что hash (k/v абстракция) Java является такой же, как dict в Python

Но что же делает тип map datatype?

Является ли это той же абстракцией, что и абстракция hashmap? Если да, то как это отличается от словаря?
Я прошел через документы, но мне потребовалась целая совокупность различных парадигм: функциональное программирование.

Ответ 1

Map не является типом данных в python. Он применяет функцию к ряду значений и возвращает результат.

>>> def f(x):
...     return x**2
... 
>>> map(f, range(5))
[0, 1, 4, 9, 16]

Часто для такого простого случая, как "pythonic", мы используем понимание списков.

>>> [x**2 for x in range(5)]
[0, 1, 4, 9, 16]

Вы правы в сравнении хэш-карт и dicts.

Ответ 2

В python нет типа данных карты. map - это функция, которая отображает функцию в последовательность.

def increment(n):
    return n+1
l = [1,2,3]
map(increment, l)

предоставит вам новый список [2,3,4]

Ответ 3

По сути, Map в Java похож на dict в Python: обе структуры данных создают ассоциации между ключами и значениями с ожидаемой производительностью O (1) для операций get() и contains().

Структуру данных Map в Java не следует путать с функцией map() в Python:

map (function, iterable,...)

Применить функцию к каждому элементу итерации и вернуть список результатов. Если передаются дополнительные итеративные аргументы, функция должна принимать много аргументов и применяется к элементам из всех повторяющихся параллельных

Ответ 4

В Python 3 карта возвращает итеративный тип данных, эквивалентный тому, что возвращается itertools imap в Python 2.

Чтобы получить те же результаты в Python 3 как Nolan Royalty Python 2, вы могли бы написать:

>>> def f(x):
...     return x**2
... 
>>> list(map(f, range(5)))

[0, 1, 4, 9, 16]

Если вы не закроете его в списке в Python 3, вы получите объект карты:

>>> map(f, range(5))
... <map object at 0x000000000327E780>

Таким образом, в Python 3 есть объекты , которые являются итерабельными.