如何处理灵活的输入和 returns 只有大写的键?

How to handle flexible inputs and returns only keys in uppercase?

理想的输出或结果应该如下所示:

    >>> uppercase_keys_from_kwargs(twn='Taiwan')
    ['TWN']
    >>> uppercase_keys_from_kwargs(twn='Taiwan', jpn='Japan')
    ['TWN', 'JPN']
    >>> uppercase_keys_from_kwargs(twn='Taiwan', jpn='Japan', ltu="Lithuania")
    ['TWN', 'JPN', 'LTU']
    >>> uppercase_keys_from_kwargs(twn='Taiwan', jpn='Japan', ltu="Lithuania", svn='Slovenia')
    ['TWN', 'JPN', 'LTU', 'SVN']

我的代码只能获取密钥:

def uppercase_keys_from_kwargs(**kwargs) -> list:
keys_only = kwargs.keys()
list_for_keys_only = list(keys_only)

return(list_for_keys_only)

我的输出:

>>> print(uppercase_keys_from_kwargs(twn='Taiwan'))
['twn']
>>> print(uppercase_keys_from_kwargs(twn='Taiwan', jpn='Japan'))
['twn', 'jpn']
>>> print(uppercase_keys_from_kwargs(twn='Taiwan', jpn='Japan', ltu="Lithuania"))
['twn', 'jpn', 'ltu']
>>> print(uppercase_keys_from_kwargs(twn='Taiwan', jpn='Japan', ltu="Lithuania", svn='Slovenia'))
['twn', 'jpn', 'ltu', 'svn']

尝试添加如下内容:

# for k in kwargs.items():
    #     kwargs.update(k.upper())

但没有用。似乎是 AttributeError.

我们可以在 dict.keys 上使用 map with str.upper

def uppercase_keys_from_kwargs(**kwargs):
    return list(map(str.upper, kwargs.keys()))

输出:

uppercase_keys_from_kwargs(twn='Taiwan')
# ['TWN']

uppercase_keys_from_kwargs(
    twn="Taiwan", jpn="Japan", ltu="Lithuania", svn="Slovenia"
)
# ['TWN', 'JPN', 'LTU', 'SVN']

试试这个:

def uppercase_keys_from_kwargs(**kwargs) -> list:
    keys_only = kwargs.keys()
    list_for_keys_only = [k.upper() for k in keys_only]

    return(list_for_keys_only)

    
print (uppercase_keys_from_kwargs(twn='Taiwan', jpn='Japan', ltu="Lithuania"))

输出:

['TWN', 'JPN', 'LTU']