计算CSV列中的重复元素

时间:2016-08-07 23:17:00

标签: python arrays list

我目前正在尝试习惯Python并尝试读取一列并计算字符串中的重复元素。

到目前为止我所拥有的:

Toast toast = Toast.makeText(getActivity(), "", Toast.LENGTH_SHORT);
        toast.setText(device.getName()+":"+device.getAddress());
        toast.show();

i = 0 y = [i] fav_Split = row[9].split('|') #print fav_Split for x in fav_Split: #print x y[i] = x i = i+1 给了我:

print fav_Split

['XA', 'MA'] ['BA', 'MA', 'RA'] ['EB', 'CB'] ['JA', 'RB', 'RA'] ['ED', 'EA', 'RB', 'KA', 'RA'] ['SB'] ['MA', 'ED', 'SB'] ['EC'] ['FA'] ['RA', 'MA'] ['RB'] ['CB'] ['AC'] ['CB', 'MA', 'RA'] ['AC'] ['KA'] ['SA', 'CB'] ['BA', 'ED', 'MA'] ['KA', 'ED', 'SA'] ['AB'] ['CA'] ['AB'] ['SB', 'MA'] ['XA', 'BA', 'CA'] ['SA', 'AB'] ['SA', 'XA', 'CA'] ['KA'] ['MA', 'XA'] ['MA'] ['RA', 'EC', 'JA'] ['RA'] ['CC', 'RA'] ['CC'] ['CC', 'RA'] ['SA', 'RA'] ['RA', 'AC'] ['XA', 'JA', 'RA'] ['CB', 'KA', 'RA'] ['ZZ'] ['CB', 'SA', 'RA'] ['MA'] ['LA', 'RB', 'RA'] ['XA', 'RA'] ['GA', 'RA', 'LA'] 给了我:

print x

这就是我想要的。我试图将这些单独的变量读入一个数组,然后简单地计算它们。但是我在尝试读入y数组时遇到错误

XA
MA
BA
MA
RA
EB
CB
JA
RB
RA
ED
EA
RB
KA
RA
SB
MA
ED
SB
EC
FA
RA
MA
RB
CB
AC
CB
MA
RA
AC
KA
SA
CB
BA
ED
MA
KA
ED
SA
AB
CA
AB
SB
MA
XA
BA
CA
SA
AB
SA
XA
CA
KA
MA
XA
MA
RA
EC
JA
RA
CC
RA
CC
CC
RA
SA
RA
RA
AC
XA
JA
RA
CB
KA
RA
ZZ
CB
SA
RA
MA
LA
RB
RA
XA
RA
GA
RA
LA

任何人都可以帮我吗?我接下来的步骤是计算重复元素并显示顶部X(可以根据用户输入进行更改)。

更新2: 调试图片: 我在这里不明白:y是......不是......将x视为自己的元素? enter image description here

更新3: 对于y + = x enter image description here

1 个答案:

答案 0 :(得分:1)

首先,让我对原始代码进行改进:

y = []
fav_Split = row[9].split('|') 
#print fav_Split

for x in fav_Split:
    y += x

或者,甚至更短:

fav_split = row[9].split('|')
y = [item for sublist in fav_Split for item in sublist]

好的,现在我们有你想要的双字母代码列表。下一步是使用collections.Counter类,这似乎正是您所需要的。您将一个列表传递给它,它会计算每个元素的出现次数,并按其出现的顺序对其进行排序。

import collections.Counter
c = collections.Counter(y)

要从列表中获取n最常见的元素,您只需使用most_common()

c.most_common(n)

  

返回n个最常见元素及其计数的列表,从最常见到最少。