Python 列表问题

标签 python list

我有一个问题需要一些帮助,我有一个看起来像这样的 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/

相关文章:

python - 如何查找和存储空class和id的信息?

python - 与列表相比,在生成器上迭代多次的速度

java - StringTemplate - 如何遍历列表中的列表?

python - 如何在谷歌云上运行我的 python 代码而不用担心断开连接——一个绝对的初学者?

python - 将注释和图例保留在同一个 seaborn 图中

python - 如何在 Django 表单中*仅*隐藏输入类型文件的按钮(不是整个元素)?

sql - 在 MySql 列中存储字符串列表

c - 在 C 中排序链表的问题

python - 如何在循环中创建一个包含我想要的数字的列表?

python - 我将如何使用 php 在网页上显示多个按钮(它们将控制 raspberry pi)