1

我有一个 Python 字典,如下所示:

d={ 'cs101': {'name': 'Building a Search Engine', 'teacher': 'Dave',
    'assistant': 'Peter C.'},
    'cs373': {'name': 'Programming a Robotic Car', 'teacher': 'Sebastian',
    'assistant': 'Andy'}
}

我需要找出“彼得”这个名字是否是这些元素的老师或助手。请注意,“彼得”和“彼得 C.” 是两个不同的人。假设coursename是一个要循环的变量'cs101''cs373'。如果我使用 'in' 关键字来检查成员资格:

'Peter' in d[coursename]['assistant'] 

它将返回 True。

同样,'' in d[coursename]['assistant']也会返回 True。

所以,看来我不能使用in关键字..

谁能告诉我如何查看会员资格?

4

4 回答 4

4

彼得,你在哪里?

'Peter' in 'Peter Pan'将检查字符串'Peter'是否可以在'Peter Pan' 的某个地方找到,这显然是正确的。

如果您想要完全匹配,您应该使用==,如下例所示:

'Peter' == d[coursename]['assistant']

以上将进行区分大小写的匹配,如果您想不区分大小写,您可以编写:'Peter'.lower() == d[coursename]['assistant'].lower().


in和之间的差异的一些例子==

Python 2.7.3(默认,2012 年 4 月 13 日,00:05:08)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] 在 darwin
输入“帮助”、“版权”、“信用”或“许可”以获取更多信息。

>>> “彼得潘”中的“彼得”
真的

>>> 《潘王子》中的“彼得”
错误的

>>> '彼得' == '彼得'
真的

>>> '彼得' == '王子'
错误的

>>> '' in '香蕉'
真的

>>> '' == '香蕉'
错误的
于 2012-07-13T02:58:42.037 回答
1

具体检查字符串是否相等而不是使用in

'Peter' == d[coursename]['assistant'] 

仅当字符串完全是 'Peter' 时才为真

于 2012-07-13T03:00:09.497 回答
0

这样的事情取决于你到底想做什么,因为它有点不清楚:

'Peter' in (d[coursename]['teacher'], d[coursename]['assistant'])

这将检查是否'Peter'等于元组中的值之一,这与您检查是否'Peter'在字符串中的测试不同。

于 2012-07-13T03:00:47.347 回答
0

为此,如果您有多个键(Python 3.9),则必须使用循环。除非您使用另一个允许这样做的模块,否则使用单线是不可能的。

for k in d.keys():
    if 'Peter' in d[k]['assistant']:
        print(True)
于 2021-10-06T08:52:45.970 回答