尝试将列表中的值与字符串进行比较,以确定它们是否匹配

Attempting to compare values in a list to a string to determine if they match

提问人:dls2235 提问时间:1/25/2023 最后编辑:dls2235 更新时间:1/25/2023 访问量:56

问:

我正在尝试将字符串中的值与列表中的值进行比较。如果值匹配,则用 1 或 0 添加第三个列表。

当前尝试检查 2 个字符串中的每个值。如果字符串中的条目匹配,则在第三个字符串(0 或 1)中统计哈希标记。我无法使比较函数工作 - 它没有返回任何值。

最近编辑:我无法链接到作业页面,但我可以发布问题的图片。

代码如下:

> #list values
landing_outcomes =['True ASDS      41\nNone None      19\nTrue RTLS      14\nFalse ASDS      6\nTrue Ocean      5\nFalse Ocean     2\nNone ASDS       2\nFalse RTLS      1\nName: Outcome, dtype: int64']

> #string values
bad_outcomes = {'False ASDS', 'False Ocean', 'False RTLS', 'None ASDS', 'None None'}


landing_class = []


> #comparison
if any (x in [landing_outcomes] for x in [bad_outcomes]):
landing_class += 0

else:
landing_class += 1


print (landing_class)
Python 字符串 比较

评论

0赞 John Gordon 1/25/2023
if any (x in [landing_outcomes] for x in [bad_outcomes])landing_outcomes已经是一个列表。你不需要额外的东西。bad_outcomes也一样。[ ]
0赞 kindall 1/25/2023
如果您只是更改为一个字符串(而不是包含一个字符串的列表),则可以使用它来检查该字符串中是否有任何不良结果。(在@JohnGordon状态中删除多余的括号后。landing_outcomesin[ ]
0赞 Woodford 1/25/2023
澄清上面的评论:是一个带有单个字符串元素的元素,这似乎不是你想要的。landing_outcomeslist
0赞 John Gordon 1/25/2023
landing_class += 0此外,这不是将零添加到列表的正确方法。
0赞 dls2235 1/25/2023
感谢你们的快速回复。我将尝试进一步解释 - 我想看看bad_outcomes中的值是否存在于Landing_outcomes中。我将不得不进一步阅读括号的用法。

答:

0赞 MatBailie 1/25/2023 #1

根据您的编辑(您添加的图像)...

  • landing_outcomes是 pandas 系列(数据帧中的一列)
  • 其索引是结果列表
  • 您想要根据集合检查数据帧
  • 这与你的问题相反
import pandas as pd

landing_outcomes = pd.Series(
  [41, 19, 14, 6, 5, 2, 2, 1],
  index=['True ASDS', 'None None', 'True RTLS', 'False ASDS', 'True Ocean', 'False Ocean', 'None ASDS', 'False RTLS'],
  name='Outcome'
)

bad_outcomes = {'False ASDS', 'False Ocean', 'False RTLS', 'None ASDS', 'None None'}

print() 
print(landing_outcomes)
print()
print(bad_outcomes)

landing_class = (~landing_outcomes.index.isin(bad_outcomes)).astype(int).tolist()

print()
print(landing_class)

该 Series 对象具有一个方法,该方法在每一行上返回一个 True 或 False 的新 Series。isin()

使用反转布尔值(因此给出“不在”的结果)。~

将布尔值转换为整数 (with ) 会将这些布尔值转换为 1 和 0。astype

然后将 pandas 系列变成一个常规的 python 列表。tolist()

演示;https://onecompiler.com/python/3yvw2dc7b