1

我正在运行以下代码:

if course_name.lower() in [x.split('.')[0].lower() for x in user_courses]:
    do_code()

当 do_code() 块运行时,我知道 course_name.lower() 在列表中匹配。有没有办法在 course_name.lower() 匹配的列表中获取 x 的值?如您所见,因为我在创建列表时使用 [0] 索引

[x.split('.')[0].lower() for x in user_courses]

我想要它匹配的 user_courses 的整个值,而不仅仅是 course_name.lower() 包含的零索引。

谢谢!

4

2 回答 2

5

你可以通过相反的方式来做到这一点:

lower_name = course_name.lower()
matches = [x for x in user_courses if x.split('.')[0].lower() == lower_name]
if matches:
    match = matches[0]
    # match is the matched name

也就是说,根据与 的相等性过滤您的列表理解course_name.lower()。如果列表中还有任何内容,那么它将等于course_name.lower()。(理论上列表中可能有多个项目,但如果是这样,它们都是相等的,所以我们可以只取第一个。)

我将计算course_name.lower()从列表理解中拉出来以避免重复计算。

于 2013-07-05T18:50:22.390 回答
1

list.index 就是为此而构建的。这个怎么样?

wordList = [x.split('.')[0].lower() for x in user_courses]
try:
    wordIndex = wordList.index(course_name.lower())
except ValueError:
    do what you will
于 2013-07-05T18:54:17.650 回答