我有一个数字数组,我将其更改为字符串
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。 那么你会怎么做呢?
提前致谢。
答案 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)]