你如何计算增量中的字符串?

时间:2017-01-12 17:32:21

标签: python string count

我有一个数字数组,我将其更改为字符串

a="1423"
astr=str(a)
aspl=list(astr)

我应该[' 1',' 4',' 2',' 3']。 我想计算数组中有多少1~9个 1 = 1次(s),2 = 1次(s)... 5 = 0次(s),6 = 0次(s)......

我对此的解决方案是

r=0
for r > 11:
    b = aspl.count(r)

但由于它是一个字符串,因此该方法不起作用。 我尝试使用

    b = aspl.count('r')

然后你可能已经猜到了,它只是在寻找r。 那么你会怎么做呢?

提前致谢。

3 个答案:

答案 0 :(得分:5)

python collections模块只提供Counter

from collections import Counter

a = '032143487214093120'

count = Counter(a)
print(count)
# Counter({'2': 3, '4': 3, '1': 3, '0': 3, '3': 3, '9': 1, '7': 1, '8': 1})

然后用

打印
for digit in (str(i) for i in range(10)):
    print('{}: {}x'.format(digit, count[digit]))

# 0: 3x
# 1: 3x
# ...
# 5: 0x
# ...

如果你坚持在你的字符串中没有出现的数字出现在计数器中,你可以初始化计数器将所有数字设置为零:

count = Counter({str(i): 0 for i in range(10)})
print(count)  # Counter({'2': 0, '4': 0, '9': 0, '0': 0, '8': 0, '3': 0,
              #          '1': 0, '7': 0, '5': 0, '6': 0})
count.update(a)
print(count)  # Counter({'2': 3, '4': 3, '0': 3, '3': 3, '1': 3, '9': 1, 
              #          '8': 1, '7': 1, '5': 0, '6': 0})

答案 1 :(得分:1)

    public ArrayList getEmpInfo(int id) {

            ArrayList data = new ArrayList();
            loginPojo lp=new loginPojo();
            Session session = null;
            SessionFactory sessionfactory = new Configuration().configure().buildSessionFactory();
            session = sessionfactory.openSession();
            String sql_query = "from loginPojo where id!=" + id;
            Query query = session.createQuery(sql_query);
            List<loginPojo> list = query.list();
            Iterator it = list.iterator();
            while (it.hasNext()) {
//you need to create new object or else it uses same object reference
       EmployeeInfoPojo emp_info = new EmployeeInfoPojo();
                lp = (loginPojo) it.next();
                emp_info.setName(lp.getName());`enter code here`
                System.out.println("Before "+emp_info.getName());
                data.add(emp_info);
                System.out.println("After "+emp_info.getName());
            }
            return data;
        }

我猜......

答案 2 :(得分:0)

这是另一种可能的解决方案,它将结果生成为一系列元组:

s = '1423'
numbers = list(range(1, 10))
print(list((i, s.count(str(i))) for i in numbers))

<强>输出

[(1, 1), (2, 1), (3, 1), (4, 1), (5, 0), (6, 0), (7, 0), (8, 0), (9, 0)]