Используйте PathLib: https://docs.python.org/3/library/pathlib.html 1
Ваша сторона \ будет заменена от /. Таким образом, вы можете использовать / с Windows в качестве пути UNIX
Используйте defaultdict
:
from collections import defaultdict
foo = defaultdict(int)
foo[bar] += 1
В Python> = 2.7 у вас также есть отдельный класс Counter для этих целей. Для Python 2.5 и 2.6 вы можете использовать его версию с обратным переносом .
Я не знаю, как это попробовали, но если необходимо добавить объекты в 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, чтобы показать, что в случае необходимости ключи могут перейтись от одного шага до другого... :) Надежда это помогает!
dict
' Метод s get ()
принимает необязательный второй параметр, который можно использовать для предоставления значения по умолчанию, если запрошенный ключ не найден:
foo[bar] = foo.get(bar, 0) + 1
Вы также можете воспользоваться структурой управления при обработке исключений. Исключение KeyError
выдается словарем при попытке присвоить значение несуществующему ключу:
my_dict = {}
try:
my_dict['a'] += 1
except KeyError, err: # in 2.6: `except KeyError as err:`
my_dict['a'] = 1
Я провел несколько сравнений по времени. Практически равный. Однако однострочная команда .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()
Для Python> = 2.5 вы можете сделать следующее:
foo[bar] = 1 if bar not in foo else foo[bar]+1