gpt4 book ai didi

python - 如何在 CSV 文件中查找任意两个元素的共享属性

转载 作者:太空宇宙 更新时间:2023-11-04 06:01:35 24 4
gpt4 key购买 nike

我有以下 csv 文件:

A,rule1
B,rule1
C,rule2
A,rule2
B,rule2
D,rule1
B,rule3

现在我想知道 A、B(以及 A、C 和 A、D。但是 A、B 作为解释足以实现其余部分)有多少第二列值。我所做的是:

file1 = open('file.csv', 'rU')
fileR = csv.reader(file1, delimiter=',')

counter = 0

for i in range(0, 5): #list that contains A, B, C. i.e list = [A, B, C, D, E, F]
for j in range(0, 5):
for k in range(0, 8): # rule list rlist = [rule1, rule2, ...]
for rows in fileR:
if rows[0] == list[i] and rows[1] == rlist[k]:
if rows[0] == list[j] and rows[1] == rlist[k]:
counter += 1

print counter

这里的counter表示A、B(以及A、C等)共有的规则总数。但我没有得到正确的答案。所以,答案应该是 A and B = 2,因为 A 和 B 都有 rule1 和 rule2。我做得对吗?

最佳答案

简单

1,将第二个字段值转换成set(使用set comprehension)

2、使用setintersection方法获取共享的。

3,得到集合len

file1 = open('file.csv', 'rU')
fileR = csv.reader(file1, delimiter=',')
L=list(fileR)
print set(item[1] for item in L if item[0]=='A').intersection([item[1] for item in L if item[0]=='B'])
print len(set(item[1] for item in L if item[0]=='A').intersection([item[1] for item in L if item[0]=='B']))

#set(['rule2', 'rule1'])
#2

关于python - 如何在 CSV 文件中查找任意两个元素的共享属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24644870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com