【问题标题】:checking if the item exists in the list检查该项目是否存在于列表中
【发布时间】:2021-05-06 16:39:49
【问题描述】:

我有两组像 A={"sara", "peter", "ray"} 和 B={"ram", "sara", "gouri"}。我想获取列表 B 的一个成员(例如“sara”)并检查列表 A 以查看该名称是否存在于列表中。如果此名称存在,则打印“是”。我想用列表 A 检查列表 B 中的所有成员。我有下面的代码,但它不起作用。

for i in B:
   if B[i]==A:
      print("yes")

【问题讨论】:

标签: python arrays for-loop


【解决方案1】:

这比你想象的要容易:

for i in B:
   if i in A:
      print("yes")

这假设 A 和 B 都是列表,但您似乎有字典/集合。您可能需要先澄清这一点。如果您有套装,上述解决方案应该仍然有效。

编辑:您现在说 A 和 B 都是来自两个单独 DataFrame 的列。在这种情况下,您可以这样做:

A={"sara", "peter", "ray"} 
B={"ram", "sara", "gouri"}

df1 = pd.DataFrame(A, columns=['Names'])
df2 = pd.DataFrame(B, columns=['Names'])

for index, row in df1.iterrows():
    if row['Names'] in df2.Names.tolist():
        print('yes')

编辑 2:您现在说要将结果添加到 df2 中的新列。使用:

A={"sara", "peter", "ray"} 
B={"ram", "sara", "gouri"}

df1 = pd.DataFrame(A, columns=['Names'])
df2 = pd.DataFrame(B, columns=['Names'])

df2['present_in_df1'] = np.where(df1['Names'] == df2['Names'], "yes", "no")

输出df2:

    Names   present_in_df1
0   gouri   no
1   ram     no
2   sara    yes

【讨论】:

  • 它们是数据框中的两列。一个数据框中的 A 列和另一个数据框中的 B 列。
  • @Sanderjuhh 谢谢,但它对所有这些都返回“是”。它应该只为“sara”返回“yes”。
  • @Deli 如果您从我上面的编辑中复制并运行代码,它只会为 Sara 的行打印“是”。
  • 是的,但是当我尝试将结果保存在 df2 的新列中时,它会为所有返回“是”。我正在写这个 df2['result']="yes" 而不是 print ('yes')
  • @Deli 再次查看编辑。以后,请在您的原始帖子中更好地解释您的问题,以便用户不必根据您的-后来添加的-要求来编辑他们的问题。
【解决方案2】:

我认为您正在寻找 in 关键字。分解:

(例如“sara”)并检查列表 A 以查看该名称是否存在于列表中。如果此名称存在,则打印“是”

if "sara" in B:
    print("yes")

我想用列表A检查列表B中的所有成员。

for b in B:
    if b in A:
        print("yes")

【讨论】:

    猜你喜欢
    • 2021-09-14
    • 2013-05-07
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 2017-12-21
    相关资源
    最近更新 更多