将dir()函数显示为字典

时间:2019-01-14 08:57:02

标签: python dictionary

我阅读了一些有关字符串,字典等的内容,并希望将这两个功能结合起来作为我的小挑战。

我试图显示dir这样的功能:

  1. __abs__

  2. __add__

  3. __and__等,直到dir

这是我的代码:

x = ''.split(', ')
dicts = {x : dir(x) for x in range(100)}
print(dicts)

第一行根本不起作用,即使我仍然对此行发表评论:

{0: ['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class ...

第二行显示以上结果。

3 个答案:

答案 0 :(得分:0)

@sqr,您好,欢迎来到SO。我想我了解您正在尝试做什么,并且我可能有解决方案。

如果在python提示符下输入dir(1),您将看到dir(1)返回一个列表。

>>> dir(1)
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', 
'__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', 
'__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', 
'__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', 
'__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__',...]

要使其成为字典,您必须一次遍历列表中的一项。

尝试以下代码:

dicts = {}
i = 1
for item in dir(1):
    dicts[i] = item
    i += 1

这将给您一本字典。希望这会有所帮助。

答案 1 :(得分:0)

vars()是一个内建函数,已经完全可以做到,不需要额外的代码。对于某些其他应用程序,您可能还想尝试locals()globals()

答案 2 :(得分:0)

Aneesh Palsule和bruno desthuilliers,你给了我一个很好的提示:)

我已经利用它们并修改了我的代码。现在,这一功能符合我的预期:

for index, item in enumerate(dir(1), 1): 
    print (index, item)

Output:
1 __abs__
2 __add__
3 __and__
4 __bool__
5 __ceil__
6 __class__
7 __delattr__ 

但是我不能通过列表理解来做到这一点。

result = {i:item for i, item in enumerate (dir(1), 1)}

Output:
{1: '__abs__', 2: '__add__', 3: '__and__', 4: '__bool__', ,...

您是否知道如何使用list_comp制作它?