簡體   English   中英

Python 關鍵字 arguments 解包返回字典

[英]Python keyword arguments unpack and return dictionary

我有一個 function 定義如下,我正在傳遞關鍵字 arguments。如何返回與關鍵字 arguments 同名的字典?

手動我可以做:

def generate_student_dict(first_name=None, last_name=None , birthday=None, gender =None):
    return {
        'first_name': first_name,
        'last_name': last_name,
        'birthday': birthday,
        'gender': gender
    }

但我不想那樣做。 有什么方法可以讓我在不實際輸入字典的情況下完成這項工作嗎?

 def generate_student_dict(self, first_name=None, last_name=None, birthday=None, gender=None):
     return # Packed value from keyword argument.

如果這種方式適合您,請使用kwargs (請參閱理解 Python 中的 kwargs ),如下面的代碼片段所示:

def generate_student_dict(self, **kwargs):            
     return kwargs

否則,您可以在函數開始時使用built-in locals()創建一個 params 副本並返回該副本:

def generate_student_dict(first_name=None, last_name=None , birthday=None, gender =None):
     # It's important to copy locals in first line of code (see @MuhammadTahir comment).
     args_passed = locals().copy()
     # some code
     return args_passed

generate_student_dict()

如果你不想通過**kwargs ,你可以簡單地返回locals

def generate_student_dict(first_name=None, last_name=None, 
                          birthday=None, gender=None):
    return locals()

請注意,如果將self作為參數傳遞,則希望從結果中刪除self

**kwargs獲取關鍵字參數

def generate_student_dict(self, **kwargs):
  # use it like
  # kwargs.get('first_name')
  # kwargs.get('last_name')
  # kwargs.get('birthday')
  # kwargs.get('gender')
  return kwargs

您可以使用locals()函數。 locals()更新並返回一個表示當前本地符號表的字典。 在功能塊中調用locals()時會返回自由變量,而不是在類塊中。

如果您想將更新的值作為字典返回

    def generate_student_dict(first_name=None, last_name=None , birthday=None, gender =None):
        main_args = locals().copy()
        first_name = 'first'
        last_name = 'last'
        birthday = '20 jan 1993'
        newvar = 100
        new_args = locals().copy()
        updated_args = {}

        for k,v in new_args.items():
            if k in main_args.keys():
                updated_args[k] = v
        return updated_args

    dict = generate_student_dict()
    print(dict) #{'first_name': 'first', 'last_name': 'last', 'birthday': '20 jan 1993', 'gender': None}

如果您想將初始值作為字典返回

    def generate_student_dict_1(first_name=None, last_name=None , birthday=None, gender =None):
        args = locals()
        first_name = 'first'
        last_name = 'last'
        birthday = '20 jan 1993'
        newvar = 100
        return args

    dict = generate_student_dict_1()
    print(dict) #{'first_name': None, 'last_name': None, 'birthday': None, 'gender': None}

如果要包括所有更改,包括方法中定義的額外變量

    def generate_student_dict_2(first_name=None, last_name=None , birthday=None, gender =None):
        first_name = 'first'
        last_name = 'last'
        birthday = '20 jan 1993'
        newvar = 100
        args = locals()
        return args

    dict = generate_student_dict_2()
    print(dict) #{'first_name': 'first', 'last_name': 'last', 'birthday': '20 jan 1993', 'gender': None, 'newvar': 100}

要僅將關鍵字 arguments 轉換為字典,您可以使用此幫助程序

要僅將關鍵字 arguments 轉換為字典,您可以輕松使用此助手

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM