前方高能--统计一列表中的所有变量类型出现的次数

my_list = [1,2,3.5,3+5j,True,False,[1,2],[(1,2),("x","y")],(1,),(3,"x"),{"name":"hhq","sex":"m"},"abc","school",{True,False}]
刚看到这个题,让我想起我刚接触python时候的想法,不就是统计吗?用字典呗,没错
但是看这个列表类型好多啊,1,2,3,4,5....我眼花了
(这不是程序员该干的事啊,我太难了)
那么...有没有其他办法?当然有,正好刚复习了正则表达式,ok 动手吧!
 
 
import re
d = {}
def get_type(s):
    """获取变量类型"""
    p = re.search(r"'\b.*\b'", str(type(s))).group()
    # p此时是这样的"'str'",于是我又加了一层判断
    if p:
        return re.search(r"\w+", p).group()

for i in my_list:
    t = get_type(i)
    if t not in d:
        d[t] = 1
    else:
        d[t] += 1

print(d)

  完事,是不是省了好多事?

        我还在想能不能用推导列表干这个事,还没想出个头绪,有想出来的不妨分享一下我哈!

posted @ 2020-01-03 09:21  绝世老中医  阅读(198)  评论(0编辑  收藏  举报