Как добавить или увеличить словарную статью?

Используйте PathLib: https://docs.python.org/3/library/pathlib.html 1

Ваша сторона \ будет заменена от /. Таким образом, вы можете использовать / с Windows в качестве пути UNIX

57
задан martineau 25 March 2017 в 02:50
поделиться

6 ответов

Используйте defaultdict :

from collections import defaultdict

foo = defaultdict(int)
foo[bar] += 1

В Python> = 2.7 у вас также есть отдельный класс Counter для этих целей. Для Python 2.5 и 2.6 вы можете использовать его версию с обратным переносом .

99
ответ дан 24 November 2019 в 19:11
поделиться

Я не знаю, как это попробовали, но если необходимо добавить объекты в dict ключах...

indicatorDict = {}
indicatorDict[0] = 'Langford'
indicatorDict[1] = 'Esther'
indicatorDict[3] = 14

Добавляют объекты к нему, быть им многократно или другие типы:

indicatorDict[0] = np.append(indicatorDict[0],'Auditorium')
indicatorDict[1] = np.append(indicatorDict[1],'Duflo')
indicatorDict[3] = np.append(indicatorDict[3],'November') 

Печать...

{0: array(['Langford', 'Auditorium'], dtype='<U10'),
 1: array(['Esther', 'Duflo'], dtype='<U6'),
 3: array(['14', 'November'], dtype='<U11')}

я избежал 3-го ключа в Dict, чтобы показать, что в случае необходимости ключи могут перейтись от одного шага до другого... :) Надежда это помогает!

0
ответ дан 24 November 2019 в 19:11
поделиться

dict ' Метод s get () принимает необязательный второй параметр, который можно использовать для предоставления значения по умолчанию, если запрошенный ключ не найден:

foo[bar] = foo.get(bar, 0) + 1
98
ответ дан 24 November 2019 в 19:11
поделиться

Вы также можете воспользоваться структурой управления при обработке исключений. Исключение KeyError выдается словарем при попытке присвоить значение несуществующему ключу:

my_dict = {}
try:
    my_dict['a'] += 1
except KeyError, err:    # in 2.6: `except KeyError as err:`
    my_dict['a'] = 1
3
ответ дан 24 November 2019 в 19:11
поделиться

Я провел несколько сравнений по времени. Практически равный. Однако однострочная команда .get () является самой быстрой.

Вывод:

get 0.543551800627
exception 0.587318710994
haskey 0.598421703081

Код:

import timeit
import random

RANDLIST = [random.randint(0, 1000) for i in range(10000)]

def get():
    foo = {}
    for bar in RANDLIST:
        foo[bar] = foo.get(bar, 0) + 1


def exception():
    foo = {}
    for bar in RANDLIST:
        try:
            foo[bar] += 1
        except KeyError:
            foo[bar] = 1


def haskey():
    foo = {}
    for bar in RANDLIST:
        if foo.has_key(bar):
            foo[bar] += 1
        else:
            foo[bar] = 1


def main():
    print 'get', timeit.timeit('get()', 'from __main__ import get', number=100)
    print 'exception', timeit.timeit('exception()', 'from __main__ import exception', number=100)
    print 'haskey', timeit.timeit('haskey()', 'from __main__ import haskey', number=100)


if __name__ == '__main__':
    main()
5
ответ дан 24 November 2019 в 19:11
поделиться

Для Python> = 2.5 вы можете сделать следующее:

foo[bar] = 1 if bar not in foo else foo[bar]+1
3
ответ дан 24 November 2019 в 19:11
поделиться
Другие вопросы по тегам:

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