Skip to main content
 首页 » 编程设计

python之"not in"比较未按预期工作

2025年05月04日13zlslch

我在使用 Python 2.7 中的 not in 比较运算符时遇到问题。我有一个美国各州缩写列表,我想检查给定的缩写是否不在该列表中,所以我使用:

'IL' not in states['Abbreviation'] 

没想到,我得到了一个True;但是,当我执行以下操作时,我也会得到一个 true。

'IL' == states['Abbreviation'][13] 

'IL' 是缩写列表中的第 14 项,当我使用 == 时,我可以证明它在列表中;但是,当我使用 not in 比较时,它没有在列表中看到它?给了什么?

我对 python 有点陌生,所以希望这个答案不会太尴尬。

谢谢,

迈克尔

编辑:是的,我在发帖前尽力“谷歌”了一个答案,但是在谷歌上搜索“不在”这个词是徒劳的,我上面描述的行为似乎与如何不一致据说这种比较在文档中有效。

EDIT2:列表

in[89]: states['Abbreviation'] 
 
out[89]: 
 
0     AL 
1     AK 
2     AZ 
3     AR 
4     CA 
5     CO 
6     CT 
7     DE 
8     DC 
9     FL 
10    GA 
11    HI 
12    ID 
13    IL 
14    IN 
15    IA 
16    KS 
17    KY 
18    LA 
19    ME 
20    MT 
21    NE 
22    NV 
23    NH 
24    NJ 
25    NM 
26    NY 
27    NC 
28    ND 
29    OH 
30    OK 
31    OR 
32    MD 
33    MA 
34    MI 
35    MN 
36    MS 
37    MO 
38    PA 
39    RI 
40    SC 
41    SD 
42    TN 
43    TX 
44    UT 
45    VT 
46    VA 
47    WA 
48    WV 
49    WI 
50    WY 
Name: Abbreviation, dtype: object 

编辑3:

我在 iPython notebook 中使用 pandas 定义了列表

import pandas as pd 
states = pd.read_table('states.csv', sep=',') 

states.csv 是一个文件,第一列是州名,第二列是缩写。这就是全部。让我困惑的是为什么可以在一行中使用 == 来显示它在列表中,然后没有 not in 给出正确的答案?

编辑4:

应回复要求,

In [92]: type(states['Abbreviation']) 
Out[92]: pandas.core.series.Series 

请您参考如下方法:

看起来你的 states 不是一个列表,而是一个 pandas DataFrame,而 states['Abbreviation'] 是它的列之一(一个 pandas 系列)。在 Series 上使用 in 检查值是否在索引中,而不是值中。在 states['Abbreviation'].values 中尝试 'IL'。