网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月04日漏签0天
python吧 关注:476,096贴子:1,972,300
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1 2 3 4 5 6 下一页 尾页
  • 102回复贴,共6页
  • ,跳到 页  
<<返回python吧
>0< 加载中...

给大家来个练手的题目,我之前整出来的

  • 只看楼主
  • 收藏

  • 回复
  • andelf
  • 贡士
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
字符计数问题
这里有个字符串
'here is a sample of english text'
问里面各个字符出现次数是多少
要求返回结果: (字典是无序的, 所以只要结果正确, 不要求顺序如此)
{'a': 2, ' ': 6, 'e': 5, 'g': 1, 'f': 1, 'i': 2, 'h': 2, 'm': 1, 'l': 2, 'o': 1, 'n': 1, 'p': 1, 's': 3, 'r': 1, 't': 2, 'x': 1} 



  • andelf
  • 贡士
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
其他写法呢?


2025-08-04 22:14:56
广告
不感兴趣
开通SVIP免广告
  • preason
  • 白丁
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
二楼的写法已经相当简洁了!再简洁的算法我是写不出来了,除非你想要复杂的,复杂的基本算法原理也差不多。
>>> s
'here is a sample of english test,test 1,test 3'
>>> d={}
>>> for c in s:
...     if c in d:
...         d[c]=d[c]+1
...     else:
...         d[c]=1
...
>>> print d
{'a': 2, ' ': 8, 'e': 7, 'g': 1, 'f': 1, 'i': 2, 'h': 2, 'm': 1, 'l': 2, 'o': 1,
 'n': 1, '1': 1, 'p': 1, 's': 6, 'r': 1, 't': 6, ',': 2, '3': 1}
>>>
和二楼的基本一样,


  • HazyStyx
  • 举人
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
def getdict(string):
    result = {}
    for ch in string:
        if ch in result:
            result[ch] += 1
        else:
            result.update({ch:1})


  • HazyStyx
  • 举人
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我忘了return.....


  • andelf
  • 贡士
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
更复杂的继续啊~
这样吧~ 为了不给大家造成压力, 我把二楼删了, 大家继续写


  • Cyesh
  • 白丁
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
<在python3下实现>
s='here is a sample of english text'
idx=set(s)#使用集合作为索引
r={}
for v in idx:
    r[v]=s.count(v)
print(r)
<完成>
话说python的语法是很简洁的:)


  • andelf
  • 贡士
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
大家随意写~ 想怎么写就怎么写


2025-08-04 22:08:56
广告
不感兴趣
开通SVIP免广告
  • andelf
  • 贡士
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
有兴趣的同学试下这个
>>> reduce(lambda d,s: dict(d, **{s:d.get(s,0)+1}), 'here is a sample of english text', {}) 
{'a': 2, ' ': 6, 'e': 5, 'g': 1, 'f': 1, 'i': 2, 'h': 2, 'm': 1, 'l': 2, 'o': 1, 'n': 1, 'p': 1, 's': 3, 'r': 1, 't': 2, 'x': 1}


  • andelf
  • 贡士
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
既然已经脱离题目本质, 发个BT 的
>>> dict((x, len(list(l))) for x,l in itertools.groupby(sorted('here is a sample of english text')))


  • HazyStyx
  • 举人
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
果然BT啊


  • fledna
  • 进士
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#mark
>>> a = 'aaabbca'
>>> dict((i,a.count(i)) for i in set(a))
via @mk


  • quanquan902000
  • 举人
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
先原谅我挖坟了。。。
可以 i++这样写么。。原谅我是初学。。。
还有12l的代码。。报错。。
NameError: name 'itertools' is not defined
idle: Python 2.6.4


  • magiclever
  • 举人
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
直接
collections.Counter('here is a sample of english text')
就好了么。。。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 3 4 5 6 下一页 尾页
  • 102回复贴,共6页
  • ,跳到 页  
<<返回python吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示