Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中只对列表中的元素计数一次,不重复_Python_Python 2.7 - Fatal编程技术网

在python中只对列表中的元素计数一次,不重复

在python中只对列表中的元素计数一次,不重复,python,python-2.7,Python,Python 2.7,我的输入应该是一个整数。根据整数值,我必须在列表中给出字符串..我的代码是: words = [] i = int(raw_input()) for i in range(0,i): j= str(raw_input()) words.append(j) unique_word_count = len(set(words)) print unique_word_count for j in words: print words.count(j), 我的输入是 4 bcd

我的输入应该是一个整数。根据整数值,我必须在列表中给出字符串..我的代码是:

words = []
i = int(raw_input())
for i in range(0,i):
   j= str(raw_input())
   words.append(j)

unique_word_count = len(set(words))

print unique_word_count
for j in words:
    print words.count(j),
我的输入是

4
bcdef
abcdefg
bcde
bcdef
输出是

3
2 1 1 2
但我需要这样的输出:

3
2 1 1
我该怎么办?

使用:

对于您的输入,您将获得:

Counter({'bcdef': 2, 'bcde': 1, 'abcdefg': 1})
你太接近了

for j in set(words):
    print words.count(j),

请注意,由于您只报告每个单词的计数一次,因此在每个计数和它所代表的单词之间失去了强大的关联。
集合
计数器
都将丢失该顺序。

您忘记在第二个循环中将列表转换为集合:

for j in set(words):
    print words.count(j)

您应该使用集合导入计数器中的


其输出每个单词的数量

使用a。是否需要保留单词与其计数之间的关联?这不在你的输出中。我不希望它们之间有任何关联。我只需要这样的输出,第一行3,第二行2line@Bhavani请注意,
len(Counter(words))
3
。@Bhavani是元素第一次出现在
words
中或根据频率排序的第二行吗?如果是frequency,则可以调用
.most\u common()
,否则可以创建自定义OrderedCounter@Bhavani换句话说,输入的第二行输出
['a','b','b']
12
还是
21
?这是重复的元素,所以它给出了2,但我不需要重复
for j in set(words):
    print words.count(j)
words = []
i = int(input())
for index in range(0,i):
   j= input()
   words.append(j)

unique_word_count = Counter(words)
print(unique_word_count)