【发布时间】:2020-11-20 01:55:46
【问题描述】:
如果我有:
l = [['98765', ['Einstein, A', 'SFEN'], 'SSW 540', 3], ['98765', ['Einstein, A', 'SFEN'], 'SSW 540', 3],
['98764', ['Feynman, R', 'SFEN'], 'SSW 564', 3], ['98764', ['Feynman, R', 'SFEN'], 'SSW 564', 3]]
什么是最好的获得方式:
k = [['98765', 'Einstein, A', 'SFEN', 'SSW 540', 3], ['98764', 'Feynman, R', 'SFEN', 'SSW 564', 3]]
如果我尝试:
uniqinstruct = set(map(tuple, l))
我收到TypeError: unhashable type: 'list'。我不想删除所有的嵌套层,因为那只会将所有内容合并到一个列表中:
output = []
def reemovNestings(l):
for i in l:
if type(i) == list:
reemovNestings(i)
else:
output.append(i)
reemovNestings(l)
print(sorted(set(output), key=output.index))
输出:
['98765', 'Einstein, A', 'SFEN', 'SSW 540', 3, '98764', 'Feynman, R', 'SSW 564']
如果两个讲师的计数相同(在这种情况下为 3 个),则只剩下一个 3,因为它是一个 set,我不能按每个 x 间隔对列表中的元素进行分组。保留最后一个值的好方法是什么?
【问题讨论】:
-
我们可以合并那些具有相同编号的列表,例如
"98765"或"98764"? -
@jizhihaoSAMA 该数字是唯一标识符,但如果讲师教授多门课程(具有不同的课程名称和数量),则可能会重复,因此不适合合并
-
@KarlKnechtel 从
django看起来像flatten,然后每5个元素收集一次也可以
标签: python list function set tuples