Как я создаю уникальную стоимость для каждого ключа с помощью dict.fromkeys?

Используйте Size-Class, нажмите «+» прямо перед вкладкой «Шрифт» (в раскадровке) и выберите «Обычный» * «Обычный» и установите размер шрифта по своему желанию.

11
задан Kyle Cronin 17 March 2009 в 15:06
поделиться

3 ответа

Проблема - это в

results = dict.fromkeys(inputs, [])

[] оценен только однажды, тут же.

Я переписал бы этот код как этот:

runs = 10
inputs = (1, 2, 3, 5, 8, 13, 21, 34, 55)
results = {}

for run in range(runs):
    for i in inputs:
        results.setdefault(i,[]).append(benchmark(i))

Другая опция:

runs = 10
inputs = (1, 2, 3, 5, 8, 13, 21, 34, 55)
results = dict([(i,[]) for i in inputs])

for run in range(runs):
    for i in inputs:
        results[i].append(benchmark(i))
11
ответ дан 3 December 2019 в 04:14
поделиться

Проверьте defaultdict (требует Python 2.5 или больше).

from collections import defaultdict

def benchmark(input):
    ...
    return time_taken

runs = 10
inputs = (1, 2, 3, 5, 8, 13, 21, 34, 55)
results = defaultdict(list) # Creates a dict where the default value for any key is an empty list

for run in range(0, runs):
    for i in inputs:
        results[i].append(benchmark(i))
12
ответ дан 3 December 2019 в 04:14
поделиться

Можно также сделать это, если Вы не хотите изучать что-либо новое (хотя я рекомендую сделать!) мне любопытно, относительно которого метод быстрее?

results = dict.fromkeys(inputs)

for run in range(0, runs):
    for i in inputs:
        if not results[i]:
            results[i] = []
        results[i].append(benchmark(i))
2
ответ дан 3 December 2019 в 04:14
поделиться
Другие вопросы по тегам:

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