【问题标题】:How to find duplicates in a 2d list - Python 3 [closed]如何在二维列表中查找重复项 - Python 3 [关闭]
【发布时间】:2020-07-21 14:10:45
【问题描述】:
list = [['P', True, 1], ['U', True, 3], ['P', True, 4], ['P', True, 5], ['Y', True, 6]]

我正在尝试制作游戏 Hangman,并且我正在尝试查找在此 2d 列表中多次出现的字母并获取它们的索引。第一个值是字母,第二个值是他们是否已经找到那个字母,第三个值是 x 坐标。我尝试了很多东西,但都没有奏效。

【问题讨论】:

  • 预期输出是什么?
  • I have tried so many things:比如什么?这看起来像一个 XY 问题。发布您的整个代码,以便我们建议一种可能更好的方式来存储此信息。
  • 我正在尝试获取重复字母的索引

标签: python multidimensional-array counter


【解决方案1】:

我不确定您是否要查找重复字母的索引。这是我尝试过的。看看这是否有效。如果您正在寻找整个第二个列表的副本,那么代码将会改变。我正在尝试在第二个列表中找到该字母的副本。例如:P 重复 3 次。

list = [['P', True, 1],
        ['U', True, 3],
        ['P', True, 4],
        ['P', True, 5],
        ['Y', True, 6]]

x = [list[i][0][0] for i in range (len(list))]

for i in range (len(x)):
    if (x[i] in x[:i]) or (x[i] in x[i+1:]): print (x[i], i)

输出:

P 0
P 2
P 3

【讨论】:

  • 这个输出没有任何意义。 2, 3, 3 是什么意思?
  • 我只是给@Anthony Lizarraga 一种方法来识别哪个索引值有重复的字母。我不清楚他的问题。只是为 Antony 提供选项以查看是否有访问索引的方法。在这种情况下,元素 2 和 3 的值为 P。这就是我想说的。
  • 元素 0 也是“P”,但你不打印它。
  • 对不起。更新代码以打印值 x = [list[i][0][0] for i in range (len(list))] for i in range (len(x)) 的所有实例: if (x[i] in x[:i]) 或 (x[i] in x[i+1:]): 打印 (x[i], i)
  • 非常感谢,我尝试解决这个问题好几天了,我无法弄清楚
【解决方案2】:

也许从这里开始。这至少会告诉你索引。

list = [['P', True, 1], ['U', True, 3], ['P', True, 4], ['P', True, 5], ['Y', True, 6]]
count = -1
for i in list:
    count += 1
    print(count,i)

返回

0 ['P', True, 1]
1 ['U', True, 3]
2 ['P', True, 4]
3 ['P', True, 5]
4 ['Y', True, 6]

【讨论】:

    【解决方案3】:

    这是一个解决方案,假设我了解要求:

    import collections
    
    # note that I added another duplicate - 'U'
    l = [['P', True, 1], ['U', True, 3], ['P', True, 4], ['P', True, 5], ['Y', True, 6], ["U", True, 7]]
    simplified_list = [i[0] for i in l]
    counter = collections.Counter([i for i in simplified_list])
    duplicates = [k for k,v in counter.items() if v > 1]
    
    res = [inx for inx, letter in enumerate(simplified_list) if letter in duplicates]
    print (res)
    

    上述列表的输出是:

    [0, 1, 2, 3, 5]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-16
      • 2013-12-15
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 2012-11-10
      • 1970-01-01
      相关资源
      最近更新 更多