Mam funkcję, która akceptuje wieloznacznych słów kluczowych parametrów:Jak wysłać słownik do funkcji akceptującej ** kwargs?
def func(**kargs):
doA
doB
Jak mogę wysłać go słownikiem?
Mam funkcję, która akceptuje wieloznacznych słów kluczowych parametrów:Jak wysłać słownik do funkcji akceptującej ** kwargs?
def func(**kargs):
doA
doB
Jak mogę wysłać go słownikiem?
Wystarczy użyć func(**some_dict)
to nazwać. To jest udokumentowane na section 4.7.4 of python tutorial.
Zauważ, że samodict
jest nie przekazywane do funkcji. Zostanie utworzona nowa kopia, więc some_dict is not kwargs
.
_ "Utworzono nowy egzemplarz" _ - Gdzie znajdę oficjalną dokumentację tego zachowania? – jan
func(**mydict)
to będzie oznaczać kwargs = mydict wewnątrz funkcji
wszystkie klucze mydict musi być ciągi
To nie jest 100% jasne pytanie, ale jeśli chcesz zdać dict
się przez kwargs
, po prostu sprawiają, że dict część innego dict, tak:
my_dict = {} #the dict you want to pass to func
kwargs = {'my_dict': my_dict } #the keyword argument container
func(**kwargs) #calling the function
Wtedy można złapać my_dict
w funkcji:
def func(**kwargs):
my_dict = kwargs.get('my_dict')
lub ...
def func(my_dict, **kwargs):
#reference my_dict directly from here
my_dict['new_key'] = 1234
Używam tego drugiego, gdy mam ten sam zestaw opcji przekazywanych do różnych funkcji, ale niektóre funkcje używają tylko niektórych opcji (mam nadzieję, że ma to sens ...). Ale jest oczywiście milion sposobów, aby to osiągnąć. Jeśli rozwiążesz problem, prawdopodobnie pomożemy ci lepiej.
dla Pythona 3.6 wystarczy umieścić ** przed nazwą słowniku
def lol(**kwargs):
for i in kwargs:
print(i)
my_dict = {
"s": 1,
"a": 2,
"l": 3
}
lol(**my_dict)
możliwe duplikat [Konwersja Python dict do kwargs?] (Http://stackoverflow.com/questions/5710391/converting-python-dict -to-kwargs) – Olli