我设置了几个词典,每个词典都有相同的键和不同的定义。
尝试编写一个函数,确定键的定义是字符串还是列表。
不打印任何东西......
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它是一个列表?
答案 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: