我阅读了一些有关字符串,字典等的内容,并希望将这两个功能结合起来作为我的小挑战。
我试图显示dir
这样的功能:
__abs__
__add__
__and__
等,直到dir
这是我的代码:
x = ''.split(', ')
dicts = {x : dir(x) for x in range(100)}
print(dicts)
第一行根本不起作用,即使我仍然对此行发表评论:
{0: ['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class ...
第二行显示以上结果。
答案 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制作它?