How do I create a dictionary from a string returning the number of characters
本问题已经有最佳答案,请猛点这里访问。
我希望像
1 2 3 4 5 6 7 | result = {} for i in s: if i in s: result[i] += 1 else: result[i] = 1 return result |
其中
1 2 | result[i] += 1 KeyError: 'h' |
使用
也可以将任何iterable传递给构造函数,使其自动计算该iterable中出现的项。由于字符串不能包含字符,您只需将字符串传递给它,即可计算所有字符:
1 2 3 4 5 6 7 8 9 | >>> import collections >>> s = 'ddxxx' >>> result = collections.Counter(s) >>> result Counter({'x': 3, 'd': 2}) >>> result['x'] 3 >>> result['d'] 2 |
当然,手工操作也很好,而且您的代码几乎可以很好地实现这一点。因为您得到了一个
1 2 3 4 | if i in result: result[i] += 1 else: result[i] = 1 |
问题出在你的第二个条件上。
例子:
1 2 3 4 5 6 7 8 9 10 | def fun(s): result = {} for i in s: if i in result: result[i] += 1 else: result[i] = 1 return result print (fun('hello')) |
这个会印出来的
1 | {'h': 1, 'e': 1, 'l': 2, 'o': 1} |
使用
1 2 3 4 5 6 7 | s = 'hello' result = {} for c in s: result[c] = result.get(c, 0) + 1 print result |
输出
1 | {'h': 1, 'e': 1, 'l': 2, 'o': 1} |
如果您不想使用
1 2 3 | >>> st = 'ddxxx' >>> {i:st.count(i) for i in set(st)} {'x': 3, 'd': 2} |