Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 听写理解中的isinstance()_Python - Fatal编程技术网

Python 听写理解中的isinstance()

Python 听写理解中的isinstance(),python,Python,在互动模式下,我输入以下作业: item = ['keys', 'values', 'items'] get = ['get', 'setdefault'] pop = ['pop', 'popitem'] copy = ['copy', 'fromkeys'] update = ['update'] clear = ['clear'] # my intent result {'item': ['keys', 'values', 'items'], 'get': ['get', 'setdefa

在互动模式下,我输入以下作业:

item = ['keys', 'values', 'items']
get = ['get', 'setdefault']
pop = ['pop', 'popitem']
copy = ['copy', 'fromkeys']
update = ['update']
clear = ['clear']
# my intent result
{'item': ['keys', 'values', 'items'],
'get': ['get', 'setdefault'],
'pop': ['pop', 'popitem'],
'copy': ['copy', 'fromkeys'],
'update': ['update'],
'clear': ['clear']}}
我打算通过dict理解和类型检查从
locals()
获取它们的dict

>>> locals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'item': ['keys', 'values', 'items'], 'get': ['get', 'setdefault'], 'pop': ['pop', 'popitem'], 'copy': ['copy', 'fromkeys'], 'update': ['update'], 'clear': ['clear']}
我修好了

In [12]: {k:locals[k] for k in locals() if isinstance(locals()[k], list)}
#Error reports again.
KeyError: '__name__'

如何修复它?

通过调用方法
items()

{k:v for k, v in locals().items() if isinstance(v, list)}
编辑: 像这样使用locals()听起来像是一个丑陋的黑客,在交互模式下使用它可以发现python如何存储它的变量,但在“真正的代码”中使用它肯定不是一个好主意。如果需要将这些参数存储在一起,请考虑一个类,例如:

class MyKeywords:
    def __init__(self):
        self.item = ['keys', 'values', 'items']
        self.get = ['get', 'setdefault']
        self.pop = ['pop', 'popitem']
        self.copy = ['copy', 'fromkeys']
        self.update = ['update']
        self.clear = ['clear']

或者找到另一种方法来获取/存储它们,局部变量肯定不是为此而生成的:)

通过调用方法
items()

{k:v for k, v in locals().items() if isinstance(v, list)}
编辑: 像这样使用locals()听起来像是一个丑陋的黑客,在交互模式下使用它可以发现python如何存储它的变量,但在“真正的代码”中使用它肯定不是一个好主意。如果需要将这些参数存储在一起,请考虑一个类,例如:

class MyKeywords:
    def __init__(self):
        self.item = ['keys', 'values', 'items']
        self.get = ['get', 'setdefault']
        self.pop = ['pop', 'popitem']
        self.copy = ['copy', 'fromkeys']
        self.update = ['update']
        self.clear = ['clear']

或者找到另一种方法来获取/存储它们,当地人肯定不会这么做:)

我希望你能找到其他方法,而不是这样做。为什么不在创建列表时将其放入dicts中?如果您的环境中还有10个与您试图创建的词典无关的列表,该怎么办?+1到@cᴏʟᴅsᴘᴇᴇᴅ'请听我的评论。从
本地人
访问这些输入似乎不是一个好主意。如果你解释你为什么这样做,可能有人会提供一种不同/更好的方法。错误标记:
items
items()
了解你的想法@cᴏʟᴅsᴘᴇᴇᴅ如果将它们放入dict,我必须在每个键中添加“”@Cᴏʟᴅsᴘᴇᴇᴅ我希望你能找到别的方法,而不是这样做。为什么不在创建列表时将其放入dicts中?如果您的环境中还有10个与您试图创建的词典无关的列表,该怎么办?+1到@cᴏʟᴅsᴘᴇᴇᴅ'请听我的评论。从
本地人
访问这些输入似乎不是一个好主意。如果你解释你为什么这样做,可能有人会提供一种不同/更好的方法。错误标记:
items
items()
了解你的想法@cᴏʟᴅsᴘᴇᴇᴅ如果将它们放入dict,我必须在每个键中添加“”@Cᴏʟᴅsᴘᴇᴇᴅ虽然你的答案可能从表面上解决了这个问题,但它忽略了一个潜在的问题,即OP首先使用
局部变量
搅动了一盆难闻的代码。@cᴏʟᴅsᴘᴇᴇᴅ 你是对的,使用局部变量是个坏主意,但是,OP面临的问题与局部变量的使用没有直接关系(这很糟糕:),而是大多数列表理解。我将在我的回答中添加一条警告:)虽然你的回答可能会从表面上解决这个问题,但它跳过了一个根本的问题,即OP首先使用
本地人
搅动了一堆臭烘烘的代码。@cᴏʟᴅsᴘᴇᴇᴅ 你是对的,使用局部变量是个坏主意,但是,OP面临的问题与局部变量的使用没有直接关系(这很糟糕:),而是大多数列表理解。我会在我的回答中加上一个警告:)对于tuturial