b = dict(zip(a[::2], a[1::2]))
Если a
велико, вы, вероятно, захотите сделать что-то вроде следующего, которое не делает никаких временных списков, подобных приведенным выше.
from itertools import izip
i = iter(a)
b = dict(izip(i, i))
В Python 3 вы может также использовать понимание dict, но по иронии судьбы я думаю, что самый простой способ сделать это будет с range()
и len()
, который обычно будет запахом кода.
b = {a[i]: a[i+1] for i in range(0, len(a), 2)}
Итак, iter()/izip()
по-прежнему, вероятно, самый Pythonic в Python 3, хотя, как отмечает EOL в комментарии, zip()
уже ленив в Python 3, поэтому вам не нужно izip()
.
i = iter(a)
b = dict(zip(i, i))
Если вы хотите его на одной строке, вам придется обмануть и использовать точку с запятой. ; -)
Пойдите с
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Больше по этой теме здесь