Если я хочу сгенерировать словарь из списка слов, используя понимание и тройной внутри, я сталкиваюсь с некоторыми проблемами и нуждаюсь в помощи.Python, пытаясь сгенерировать словарь внутри полного списка
Словарь должен быть сгенерирован без импорта дополнительного модуля, используя длину слова в качестве ключа и слово как значение. Вот моя проблема наиболее упрощена:
l=['hdd', 'fdd', 'monitor', 'mouse', 'motherboard']
d={}
for w in l :
if len(w) in d : d[ len(w) ].append(w)
else : d[ len(w) ] = [ w ]
# and dictionary inside list is OK:
print [d]
>>>[{11: ['motherboard'], 3: ['hdd', 'fdd'], 5: ['mouse'], 7: ['monitor']}]
Затем попытался сделать его всеобъемлющим:
d={}
print [ d[ len(w) ].append(w) if len(w) in d else d.setdefault(len(w), [w]) for w in l ]
>>>[['hdd', 'fdd'], None, ['monitor'], ['mouse'], ['motherboard']]
... который не работает. Любая помощь?
Это потому, что ваш список будет состоять из возвращаемых значений ваших выражений. Попробуйте 'print d [3] .append (123)' в приглашении и посмотрите. Фактический словарь 'd' в порядке. – user1603472
Upvote для просмотра. – Alex