我有一个csv文件,其中包含多行和每行中的多个条目。我知道如何将csv的每一行转换为列表。
例如,从到
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。
发布于 2019-11-10 10:48:20
构建共享某个属性的所有项的集合的一种简单方法是将它们放入以该属性为关键字的字典中。
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])
生成以下输出:
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]]
https://stackoverflow.com/questions/58785275
复制相似问题