您所描述的数据结构似乎更适合建模为
pandas DataFrame:您基本上将数据视为二维网格,并且希望根据一列中的值过滤出该网格的行。
以下代码片段将使用DataFrame作为中间表示来完成您所需的操作:
import pandas as pd
data = {"level":[1,2,3], "conf":[-1,1,2], "text":["here","hel","llo"]}
df = pd.DataFrame(data)
df = df.loc[df["conf"] > 0]
result = df.to_dict(orient="list")
输出:
{'level': [2, 3], 'conf': [1, 2], 'text': ['hel', 'llo']}
然而,需要注意的是,如果您最初将数据表示为DataFrame,并在完成后保持该形式,那么这将变得更加简化:
data = pd.DataFrame({
"level":[1,2,3],
"conf":[-1,1,2],
"text":["here","hel","llo"],
})
result = data.loc[data["conf"] > 0]
输出:
level conf text
1 2 1 hel
2 3 2 llo
比任何“纯字典”解决方案更简洁、更具表现力且(在大输入情况下)性能更高。
如果您希望在此数据上执行的其他操作类似(在“2D数组”操作意义上),那么很可能它们也更自然地以DataFrame为基础表达,因此保持数据作为DataFrame可能比转换回字典更有优势。