Сходный в array_slice PHP в Пайтоне для Словарей

В хороший день, оказывается, что у меня есть этот код в php

$array = ["a" => 1, "b" => 2, "c" => 3];
$slice = array_slice($array, 1, 2, False);

И я хочу переписать это в python, но не нахожу никакой альтернативы в документации python. Функция PHP то, что он делает, состоит в том, чтобы получать двух Keys и ищет их в array, как

list[1:2]

в python, но в словарях закончись KeyError

1
задан 10.11.2019, 00:13
1 ответ

Две вещи: У

  • array_slice PHP нет той же самой semГЎntica, что slices python, так как в Г©stos Гєltimos они nГєmeros между квадратными скобками это Г-ndice начала, и Г-ndice конца mГЎs один. Взамен в PHP они parГЎmetros - Г-ndice начала и nГєmero tГ©rminos, чтобы извлекать.

  • Эта mГЎs тяжело. В PHP кажется, что arrays тип "словарь" у них есть порядок intrГ-nseco, так как ты можешь иметь в виду концепции как "первый элемент словаря", "второй элемент", и т.д. В Пайтоне, даже он приносит пользу мало, у словарей нет внутреннего порядка. Нет способа говорить cuГЎl - первый элемент словаря (результат не детерминист) и следовательно не возможно извлекать slice основанные на Г-ndices.

    В ней versiГіn 3.7 словари sГ - tenГ-an порядок: порядок inserciГіn. А именно, порядок, в котором уходят aГ±adiendo элементы в словарь. Тем не менее, этот порядок был "побочным эффектом" формы, в которой они были осуществлены, и documentaciГіn он это рекомендовал не писать cГіdigo, что он зависел от этого порядка, так как podrГ, - чтобы меняться в будущих версиях.

    В ней versiГіn 3.8 у словарей уже есть порядок "официально". Все версии начиная с 3.8 respetarГЎn это начало, а следовательно уже возможно писать cГіdigo, что зависел от этой ordenaciГіn. Равно как в 3.7, порядок - inserciГіn.

, Сказанный все предыдущее Вїpodemos состязаться ее funciГіn array_slice из PHP? Так как sГ, - мы можем писать одну funciГіn, что возвратил элементы словаря начинаясь в i-Г©simo. Но имей в виду, что cuГЎl - элемент i-Г©simo, он не детерминист если только estГ©s используя Пайтон 3.7 или начальник.

Вещь serГ - в asГ-:

  • Мы Превращаем словарь в список tuplas, используя diccionario.items(). Каждый элемент этого списка - равный ключ - стоимость.
  • В этом списке уже мы можем применять slice из python, чтобы выбирать элементы, что estГ©n между i-Г©simo до i-Г©simo mГЎs попросившая длина.
  • Вытекающий список мы вновь конвертируем в словаре и это возвращаем.
def dict_slice(d, inicio, longitud):
  lista = list(d.items())[inicio:inicio+longitud]
  return dict(lista)

И пример использования:

>>> ejemplo = {"a": 1, "b": 2, "c": 3}
>>> dict_slice(ejemplo, 1, 2)
{'b': 2, 'c': 3}
1
ответ дан 01.12.2019, 12:10