我有一个问题需要一些帮助,我有一个看起来像这样的 python 列表:
fail = [
['da39a3ee5e6b4b0d3255bfef95601890afd80709', 'ron\\b\\include', 'Test.java']
['b5cc17d3a35877ca8b76f0b2e07497039c250696', 'ron\\c', 'apa1.txt']
['95d1543adea47e88923c3d4ad56e9f65c2b40c76', 'ron\\c', 'knark.txt']
['da39a3ee5e6b4b0d3255bfef95601890afd80709', 'ron\\d', 'Sourcecheck.py']
['da39a3ee5e6b4b0d3255bfef95601890afd80709', 'ron\\a\\include', 'svin.txt']
['b5cc17d3a35877ca8b76f0b2e07497039c250696', 'ron\\a', 'apa2.txt']
['95d1543adea47e88923c3d4ad56e9f65c2b40c76', 'ron\\c', 'apa.txt']
sha1 value, directory, filename
我想要的是根据 sha1 值和目录将此内容分隔在两个不同的列表中。例如。
['95d1543adea47e88923c3d4ad56e9f65c2b40c76', 'ron\\c', 'apa.txt']
['95d1543adea47e88923c3d4ad56e9f65c2b40c76', 'ron\\c', 'knark.txt']
我想将 duplicate = []
添加到列表中,因为它在具有相同 sha1 值的同一目录中(并且仅在该目录中)。我想添加到另一个列表的其余条目,例如 diff = []
,因为 sha1 值相同但目录不同。
我有点迷失这里的逻辑,所以我能得到的所有帮助将不胜感激!
编辑:修复了一个拼写错误,最后一个值(文件名)在某些情况下是一个 1-list 元素,这是 100% 不正确的,感谢 SilentGhost 意识到这个问题。
最佳答案
duplicate = []
# Sort the list so we can compare adjacent values
fail.sort()
#if you didn't want to modify the list in place you can use:
#sortedFail = sorted(fail)
# and then use sortedFail in the rest of the code instead of fail
for i, x in enumerate(fail):
if i+1 == len(fail):
#end of the list
break
if x[:2] == fail[i+1][:2]:
if x not in duplicate:
duplicate.add(x)
if fail[i+1] not in duplicate:
duplicate.add(fail[i+1])
# diff is just anything not in duplicate as far as I can tell from the explanation
diff = [d for d in fail if d not in duplicate]
使用您的示例输入
duplicate: [
['95d1543adea47e88923c3d4ad56e9f65c2b40c76', 'ron\\c', ['apa.txt']],
['95d1543adea47e88923c3d4ad56e9f65c2b40c76', 'ron\\c', 'knark.txt']
]
diff: [
['b5cc17d3a35877ca8b76f0b2e07497039c250696', 'ron\\a', ['apa2.txt']],
['b5cc17d3a35877ca8b76f0b2e07497039c250696', 'ron\\c', 'apa1.txt'],
['da39a3ee5e6b4b0d3255bfef95601890afd80709', 'ron\\a\\include', ['svin.txt']],
['da39a3ee5e6b4b0d3255bfef95601890afd80709', 'ron\\b\\include', 'Test.java'],
['da39a3ee5e6b4b0d3255bfef95601890afd80709', 'ron\\d', 'Sourcecheck.py']
]
所以也许我错过了什么,但我认为这就是您所要求的。
关于Python 列表问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1034145/