python - 如何根据具有重复键值对的数据框行将值附加到python字典中的键
问题描述
我有带有键值对行的电子商务数据,例如:
row1: "ideal for":"women", "color":"blue"
row2: "ideal for": "women", "color":"red"
row3: "ideal for": "men", "color":"blue"
我需要的是创建一个包含相关值的键和数组的新字典,例如:
{"ideal for": ["women","men"], "color": ["red", "blue"]}
当我尝试将值附加到新字典中的键时,我似乎无法弄清楚以这种方式进行操作,以使值不会重复。
df.apply(lambda row: prep_text(row['product_specifications']), axis=1)
tag_info = df['product_specifications']
tag_info.replace('', np.nan, inplace=True)
tag_info.dropna(inplace=True)
tags_dict = dict()
for row in tag_info:
for key, value in row.items():
if key not in tags_dict:
tags_dict[key] = [value]
elif value not in tags_dict.values():
tags_dict[key].append(value)
现在,我得到了一个看起来像这样的新字典:
{"ideal for": ["women","women","men"], "color":["blue", "red", "blue"]}
我该怎么做才能使这些值不重复?
解决方案
tags_dict.values() 的元素是字符串列表,而不是字符串。你应该检查
elif value not in tags_dict[key]:
tags_dict[key].append(value)
或者,您可以使用Set而不是List作为 tags_dict 的值。Set只能包含每个值的一个副本,因此如果您添加相同值的第二个副本,它将忽略它。但是Set中的值是无序的。
if key not in tags_dict:
tags_dict[key] = {value}
else:
tags_dict[key].add(value)
推荐阅读
- mysql - MySQL 8.0.26 的 WHILE 循环中的语法无效
- amazon-web-services - 使用 AWS KMS 和 Secrets Manager 加密 PII + RDS 数据库中的其他数据
- python - 在纸浆优化模型中编写决策变量和目标函数
- java - 使用java堆外内存和兼容性
- powershell - 动态更改对象的嵌套属性(例如:$_.Property.SubProperty)
- sed - sed替换单引号
- c# - 将构建的客户端代码嵌入到独立的单个文件 .net5 应用程序中
- c# - 如何在 C# 中播放使用 CSCORE WASAPI 捕获的音频
- python - 找出连续多少天在熊猫中有特定值
- python - 结合 csvreader 生成器对象中两个单独列的日期和时间