如果声明 - 这是一个字符串吗?

时间:2013-09-07 04:17:02

标签: python string list function types

我设置了几个词典,每个词典都有相同的键和不同的定义。

尝试编写一个函数,确定键的定义是字符串还是列表。

不打印任何东西......

lloyd = {
    "name": "Lloyd",
    "homework": [90.0, 97.0, 75.0, 92.0],
    "quizzes": [88.0, 40.0, 94.0],
    "tests": [75.0, 90.0]
}
alice = {
    "name": "Alice",
    "homework": [100.0, 92.0, 98.0, 100.0],
    "quizzes": [82.0, 83.0, 91.0],
    "tests": [89.0, 97.0]
}
tyler = {
    "name": "Tyler",
    "homework": [0.0, 87.0, 75.0, 22.0],
    "quizzes": [0.0, 75.0, 78.0],
    "tests": [100.0, 100.0]
}

students = [lloyd,alice,tyler]

def compute_grades(ourstudents):
    for item in ourstudents:
        if item["name"] == type(str):
            print "YES"

compute_grades(students)

在这种情况下如何使用if语句来确定它是字符串还是IF它是一个列表?

3 个答案:

答案 0 :(得分:5)

使用isinstance

>>> isinstance("foo", str) #Use basestring in py2.x
True
>>> isinstance([1, 2, 3], list)
True

答案 1 :(得分:2)

if item["name"] == type(str):

这有两个问题:

  • 您正在比较“名称”字段的,而不是类型
  • 您将其与str的类型进行比较; str 本身就是字符串类型,因此type(str)是类型类型,您可以在此处看到:

    >>> type("Alice")
    <type 'str'>
    >>> str
    <type 'str'>
    >>> type(str)
    <type 'type'>
    

从此,您可以看到"Alice" == type(str)必须为false。

如果需要,在python中检查类型的首选方法是使用isinstance(<value>, <type>);例如:

>>> isinstance("Alice", str)
True

答案 2 :(得分:1)

type应用于比较的另一个参数。

if type(item["name"]) == str: