Python 数一数字母并显示在列表中

Python 数一数字母并显示在列表中,python,string,list,Python,String,List,我需要从用户那里接收一个字符串,将其显示在列表中,以便列表中的每个器官都包含[字母,它在一行中重复的数字] 我认为我的代码很好,但不起作用。 我使用了,我看到了一个问题,就是我的var.next和current始终保持相同的值 有人有主意吗 这是我的密码: string = raw_input("Enter a string:") i=0 my_list=[] current=string[i] next=string[i+1] counter=1

我需要从用户那里接收一个字符串,将其显示在列表中,以便列表中的每个器官都包含[字母,它在一行中重复的数字]

我认为我的代码很好,但不起作用。 我使用了,我看到了一个问题,就是我的var.next和current始终保持相同的值

有人有主意吗

这是我的密码:

    string = raw_input("Enter a string:")
    i=0
    my_list=[]
    current=string[i]
    next=string[i+1]
    counter=1
    j=0
    while i<range(len(string)) and next<=range(len(string)):

        if i==len(string)-1:
            break
        j+=1
        i+=1
        if current==next:
            counter+=1

        else:
            print my_list.append([string[i],counter])
            counter=1
在此处使用:

或不使用库:

strs = raw_input("Enter a string:")
lis = []
for x in strs:
   if len(lis) != 0:
      if lis[-1][0] == x:
         lis[-1][1] += 1
      else:
         lis.append([x, 1])
   else:
       lis.append([x, 1])         
print lis                   
输出:

Enter a string:aaabbbcccdef
[['a', 3], ['b', 3], ['c', 3], ['d', 1], ['e', 1], ['f', 1]]
在此处使用:

或不使用库:

strs = raw_input("Enter a string:")
lis = []
for x in strs:
   if len(lis) != 0:
      if lis[-1][0] == x:
         lis[-1][1] += 1
      else:
         lis.append([x, 1])
   else:
       lis.append([x, 1])         
print lis                   
输出:

Enter a string:aaabbbcccdef
[['a', 3], ['b', 3], ['c', 3], ['d', 1], ['e', 1], ['f', 1]]

Aswini代码的更简单变体:

string = raw_input("Enter a string:")
lis = []
for c in string:
    if len(lis) != 0 and lis[-1][0] == c:
        lis[-1][1] += 1
    else:
        lis.append([c, 1]) 

print lis  

Aswini代码的更简单变体:

string = raw_input("Enter a string:")
lis = []
for c in string:
    if len(lis) != 0 and lis[-1][0] == c:
        lis[-1][1] += 1
    else:
        lis.append([c, 1]) 

print lis  

使用defaultdict可以非常轻松地执行此操作:

import collections

defaultdict=collections.defaultdict
count=defaultdict(int)
string="hello world"
for x in string:
    count[x]+=1
要在列表中显示,您可以执行以下操作:

count.items()
在这种情况下,将返回:

[(' ', 1), ('e', 1), ('d', 1), ('h', 1), ('l', 3), ('o', 2), ('r', 1), ('w', 1)]

使用defaultdict可以非常轻松地执行此操作:

import collections

defaultdict=collections.defaultdict
count=defaultdict(int)
string="hello world"
for x in string:
    count[x]+=1
要在列表中显示,您可以执行以下操作:

count.items()
在这种情况下,将返回:

[(' ', 1), ('e', 1), ('d', 1), ('h', 1), ('l', 3), ('o', 2), ('r', 1), ('w', 1)]

我们还没学会。。我们刚刚上了第二节课。我更喜欢用我们喜欢的东西learnt@user1562379还添加了一个简单的解决方案。哇!tnx太多了@Ashwini Chaudhary,我已经试着解决了好几天了。@user1562379:你可以让这个简单的解决方案变得更简单-看看我的答案为什么你要使用
range(len(string))
,你可以像我一样直接遍历字符串。我们还没有学会它。。我们刚刚上了第二节课。我更喜欢用我们喜欢的东西learnt@user1562379还添加了一个简单的解决方案。哇!tnx这么多@Ashwini Chaudhary,我已经试着解决了好几天了。@user1562379:你可以让这个简单的解决方案变得更简单-看看我的答案为什么你要使用
range(len(string))
,你可以像我一样直接遍历字符串。不,你不能,因为字典只会存储一次条目。(请参阅输出中缺少第一个
o
)不,您不能,因为字典只会存储一次项。(请参阅输出中缺少第一个
o
)请注意,有一个。您不应将该名称用于变量。请注意,有一个。您不应将该名称用于变量。