Удалить элемент из словаря Python на основе индекса

Я помещаю превосходный ответ JLBorges на аналогичный вопрос дословно из cplusplus.com, так как это наиболее краткое объяснение, которое я прочитал по этому вопросу.

] В шаблоне, который мы пишем, есть два типа имен, которые можно использовать - зависимые имена и не зависимые имена. Зависимое имя - это имя, которое зависит от параметра шаблона; неизменяемое имя имеет то же значение, независимо от параметров шаблона.

Например:

template< typename T > void foo( T& x, std::string str, int count )
{
    // these names are looked up during the second phase
    // when foo is instantiated and the type T is known
    x.size(); // dependant name (non-type)
    T::instance_count ; // dependant name (non-type)
    typename T::iterator i ; // dependant name (type)

    // during the first phase, 
    // T::instance_count is treated as a non-type (this is the default)
    // the typename keyword specifies that T::iterator is to be treated as a type.

    // these names are looked up during the first phase
    std::string::size_type s ; // non-dependant name (type)
    std::string::npos ; // non-dependant name (non-type)
    str.empty() ; // non-dependant name (non-type)
    count ; // non-dependant name (non-type)
}

То, что зависит от зависимого имени, может быть чем-то другим для каждого конкретного экземпляра шаблона. Как следствие, шаблоны C ++ подвержены «двухфазному поиску имен». Когда шаблон сначала анализируется (до того, как выполняется какое-либо создание), компилятор просматривает не зависящие имена. Когда происходит конкретное создание шаблона, параметры шаблона известны к тому времени, и компилятор ищет зависимые имена.

На первом этапе анализатор должен знать, является ли зависимое имя именем типа или имени не-типа. По умолчанию зависимым именем считается имя не-типа.

Использовать ключевое слово typename только в объявлениях шаблонов и определениях, приведенных ниже.


у вас есть квалифицированное имя, которое относится к типу и зависит от параметра шаблона.

-3
задан Sahitya 2 April 2019 в 17:34
поделиться

1 ответ

Предполагая, что вы делаете это в Python 3.7 или новее, где упорядочены ключи dict, вы можете создать итератор из ключей dict и использовать функцию next для получения первого ключа, чтобы вы могли использовать [ 115] оператор для удаления этого ключа:

d = {'s':0, 'e':1, 't':6}
del d[next(iter(d))]
print(d)

Это выводит:

{'e': 1, 't': 6}

Если вы хотите удалить ключ другого индекса, вы можете использовать itertools.islice для получения ключ по заданному индексу. Например, чтобы удалить второй ключ (с индексом 1) из d:

from itertools import islice
d = {'s':0, 'e':1, 't':6}
del d[next(islice(d, 1, None))]
print(d)

Это выдаст:

{'s': 0, 't': 6}
0
ответ дан blhsing 2 April 2019 в 17:34
поделиться
Другие вопросы по тегам:

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