Мне нужно преобразовать этот код Ruby в Python:
dicts = Hash.new { |h,k| h[k] = [] }
Я новичок в Python и никогда не изучал Ruby. Но я читал некоторые документы, и я думаю, что в Python это должно выглядеть примерно так:
dicts = {}.setdefault(k, [])
Но я не уверен. Не могли бы вы мне помочь?
Из документов Ruby:
# While this creates a new default object each time
h = Hash.new { |hash, key| hash[key] = "Go Fish: #{key}" }
h["c"] #=> "Go Fish: c"
h["c"].upcase! #=> "GO FISH: C"
h["d"] #=> "Go Fish: d"
h.keys #=> ["c", "d"]
Таким образом, эквивалент python для вашего сценария заключается в использовании defaultdict
следующим образом:
from collections import defaultdict
dicts = defaultdict(list)
print(dicts['any_key']) #[]
Просто {'k': []}
дает словарь, где 'k'
сопоставляется с пустым списком.