【发布时间】:2020-07-08 10:49:15
【问题描述】:
具体而言,目标是在多个dict 与键paper_title 具有相同内容时删除重复项。
但是,如果list 的估算方式不一致,例如dict 和str 的组合,则该行会引发错误
TypeError:字符串索引必须是整数
产生上述错误的完整代码如下:-
from itertools import groupby
def extract_secondary():
#
test_list = [{"paper_title": 'This is duplicate', 'Paper_year': 2}, \
{"paper_title": 'This is duplicate', 'Paper_year': 3}, \
{"paper_title": 'Unique One', 'Paper_year': 3}, \
{"paper_title": 'Unique two', 'Paper_year': 3}, 'all_result']
f = lambda x: x["paper_title"]
already_removed = [next(g) for k, g in groupby(sorted(test_list, key=f), key=f)]
extract_secondary()
我可以知道代码的哪一部分需要进一步调整吗?欣赏任何见解。
PS:如果此线程被认为与OP1 重复,请通知我。但是,由于问题的独特性,我相信这个线程值得自己存在。
【问题讨论】:
-
您不应要求人们下载并打开 pickle 文件。打开 pickle 文件可能会导致执行任意 python 代码(例如删除整个硬盘驱动器)。您应该更新您的示例以仅包含 pickle 文件中的数据。
-
test_list中有一个str,而不是dict("all_result")。因此sorted抱怨它不能将f用于str。 -
感谢@Chris 的输入,我设法根据您的洞察力找到了罪魁祸首。
标签: python duplicates