如何从列表python中删除重复项

时间:2015-08-03 11:29:43

标签: python

基本上我必须编写一个程序来计算每个字母出现在字符串中的时间。例如,我得到了它,但字母重复。如果字符串是hello,它将输出:

  • h 1
  • e 1
  • l 2
  • l 2
  • o 1

当我需要输出时:

  • h 1
  • e 1
  • l 2
  • o 1

到目前为止我完成它的方式是没有导入任何东西,我的代码看起来像:

input_text = input('Enter some text: ')
s = input_text.lower()
length_s = len(s)
l = 0
while length_s > 0:
    if s[l].isalpha():
        print(s[l], s.count(s[l]))
        l += 1
        length_s -=1
    else:
        l += 1
        length_s -=1

2 个答案:

答案 0 :(得分:5)

您可以使用collections.Counter作为用例,它是用于计算可哈希对象的dict子类(例如 - 字符串中的字符)。示例 -

>>> from collections import Counter
>>> c = Counter('hello')
>>> c
Counter({'l': 2, 'h': 1, 'o': 1, 'e': 1})
>>> for i,x in c.items():
...     print('{} - {}'.format(i,x))
...
l - 2
h - 1
o - 1
e - 1

不使用导入,您可以使用set()存储已经看过的字符。 (这样做是为了维持订单) -

input_text = input('Enter some text: ')
s = input_text.lower()
seen = set()
for c in s:
     if c not in seen:
         print(c, s.count(c))
         seen.add(c)

答案 1 :(得分:2)

如果您不想导入任何内容,可以执行以下操作来获取字典:

s = input_text.lower()
countDict = {}
for char in s:
    if (char not in countDict):
        countDict[char] = 1
    else:
        countDict[char] += 1