在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)