如何从CSV文件生成以单词为键、对应全部同义词列表为值的字典
你现有代码的问题是:遍历每行数据时,始终直接对dict_syn[k]执行赋值操作,同一个单词的后续同义词会直接覆盖之前存储的内容,因此最终每个单词仅保留最后一个遍历到的同义词。
最小改动版本(基于你的原有逻辑修改)
import pandas as pd import os # read specific columns of csv file using Pandas df = pd.read_csv("sparql.csv", usecols = ["w","syn"]) print(df) liste_mot = df['w'].tolist() liste_mot = set(liste_mot) print(len(liste_mot)) dict_syn = {} for index, row in df.iterrows(): k, v = row sys = os.path.basename(v) # 等价于原split后join的逻辑,代码更简洁 sys = sys.replace("_", " ") # 键不存在则先初始化空列表 if k not in dict_syn: dict_syn[k] = [] # 避免重复存储同一个同义词 if sys not in dict_syn[k]: dict_syn[k].append(sys) print(dict_syn)
更高效的Pandas原生实现(适合数据量较大的场景,无需手动遍历行)
import pandas as pd import os # 读取指定列 df = pd.read_csv("sparql.csv", usecols = ["w","syn"]) # 批量处理同义词字段 df["syn"] = df["syn"].apply(lambda x: os.path.basename(x).replace("_", " ")) # 按单词分组,同义词去重后聚合成列表,最终转字典 dict_syn = df.groupby("w")["syn"].apply(lambda x: x.drop_duplicates().tolist()).to_dict() print(dict_syn)
内容的提问来源于stack exchange,提问作者emma
相关产品推荐
相关产品推荐

