首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检测不同列表中相同位置的项目

检测不同列表中相同位置的项目
EN

Stack Overflow用户
提问于 2019-11-10 10:32:05
回答 1查看 25关注 0票数 0

我有一个csv文件,其中包含多行和每行中的多个条目。我知道如何将csv的每一行转换为列表。

例如,从到

代码语言:javascript
运行
复制
  1,x,2                       [1,x,2]
  3,x,4                       [3,x,4]
  5,y,6                       [5,y,6]
  7,y,8                       [7,y,8]

但我不知道如何通过每个列表找不到在相同位置但在不同列表中的项目。我希望能够检测“x”和“y”(以及后续列表中相同位置的任何其他项)。

此外,一旦我可以检测和区分x、y等,我就需要整理和分析另一项匹配列表。

e.g

1,x,2

整理2和4,因为它们的列表中有x。

5,y,6

整理6和8,因为它们的列表中有y。

EN

回答 1

Stack Overflow用户

发布于 2019-11-10 10:48:20

构建共享某个属性的所有项的集合的一种简单方法是将它们放入以该属性为关键字的字典中。

代码语言:javascript
运行
复制
from collections import defaultdict
from typing import List, Dict, Tuple, Union

Entry = Union[int, str]
csv: List[List[Entry]] = [
    [1,'x',2],
    [3,'x',4],
    [5,'y',6],
    [7,'y',8]
]

index: Dict[Tuple[int, Entry], List[List[Entry]]] = defaultdict(list)

for row in csv:
    for i in range(len(row)):
        # Key on a tuple of i and the entry, e.g. (1, 'x') 
        index[(i, row[i])].append(row)

for key in index:
    if len(index[key]) > 1:
        print("index %d contains entry %s in multiple lists:" % key)
        print(index[key])

生成以下输出:

代码语言:javascript
运行
复制
index 1 contains entry x in multiple lists:
[[1, 'x', 2], [3, 'x', 4]]
index 1 contains entry y in multiple lists:
[[5, 'y', 6], [7, 'y', 8]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58785275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档