1

我是 Python 的菜鸟。

我经常发现自己在查看一段代码并试图找出数据结构(例如字典)中的内容。事实上,我首先要解决的问题是“这是什么类型的数据结构?” 然后我试着弄清楚如何看里面有什么。我看着一个变量并说“这是一个字典,还是一个列表,还是一个多字典或其他我还不熟悉的东西?”。然后,“里面是什么?”。它消耗大量时间,我只是不知道我是否采取了正确的方法。

所以,问题是,“Python 大师如何找出某种数据结构,以及他们使用什么技术来查看这些数据结构内部的内容?”

我希望这个问题不是太笼统,但我花费了大量的时间来尝试解决识别数据结构和查看其内容的问题,更不用说编写有用的代码了。

多谢了。

4

4 回答 4

3

对变量使用 type() 函数将告诉您数据类型。例如:

inventory = {'cows': 4, 'pigs': 3, 'chickens': 5, 'bears': 2}
print(type(inventory))

将打印

<class 'dict'>

这意味着变量inventory是一个字典。

其他可能的数据类型是字符串的“str”、整数的“int”、浮点数的“float”、元组的“tuple”和布尔值的“bool”。

要查看集合中的内容,您可以简单地使用 print() 函数。

aList = [ 'hunger', 'anger', 'burger']
print(aList)

将输出

['hunger', 'anger', 'burger']
于 2012-06-08T02:05:17.113 回答
2

我通常更关心一个类型是如何/使用的/而​​不是一个类型到底是什么。

例如,如果一个对象与 say 一起使用:

foo["hey"] = "there"
for key, value in foo.items():
    print key, '->', value

然后我假设 'foo' 是某种类似 dict 的对象,除非我有理由进一步调查,否则这就是我所关心的。

(注意:我还在 python 2.x 领域,python 3.x 中的语法略有不同,但重点仍然存在)

于 2012-06-08T02:39:42.217 回答
2

而不是“这是什么?”,用 Python 最好问“这是做什么的?” 或“这是如何使用的?”。如果你看到一些被索引的东西,比如a['foo'],它是字典还是其他对象都无关紧要,只是它可以被字符串索引。

这个想法通常被称为 Duck Typing,所以搜索这个可能会给你一些有用的信息。快速搜索出现了这篇文章,这似乎与你相关: http ://www.voidspace.org.uk/python/articles/duck_typing.shtml

于 2012-06-08T02:43:56.737 回答
2

我将 aimport pdb;pdb.set_trace()放在相关位置,并在调试器中使用dir(), .__dict__andpp或任何其他必要的检查形式。

于 2012-06-08T04:34:52.320 回答