我正在使用一个具有大约1100名员工姓名的字符串数组。
我想提取雇员姓名的前几个字符,以便可以按字母顺序在表格视图中的不同部分中划分姓名。就像iPhone上的通讯录应用程序一样。
我尝试过提取
var first_char = [String]()
while (i < employeenames.count)//employeenames is the names array
{
first_char.append(String(employeenames[i].prefix(1)))
i+=1
}
这样,我得到了所需的字符,但是代码却花了很长时间。我也想计算first_char数组中出现“ A”或“ B”的次数。这又要花几秒钟并占用CPU。
请有人帮我解决这个问题。
答案 0 :(得分:2)
您似乎想对名称数组执行“分组依据”操作。
您要按第一个字符分组,所以:
import numpy as np
import numpy.linalg as LA
import scipy.optimize as optimize
A = np.array([[1/5, 1/2, 1/3], [1/4, 1/5, 1/6], [1/6, 2/9, 3/10]])
b = np.array([1, 1, 1])
x = LA.solve(A, b)
返回值为let groups = Dictionary(grouping: employeenames, by: { String($0.first!).uppercased() })
。
要计算[Character: [String]]
出现的次数,只需执行以下操作:
A
答案 1 :(得分:1)
使用此代码:
class CartSerializer(serializers.ModelSerializer):
items = ItemSerializer(source='itemcart_set', many=True)
生成的单字符数组的顺序将与let employeenames = ["Peter", "John", "Frank"]
let firstChars = employeenames.map { String($0.first ?? Character("")) }
数组的顺序相同。如果您需要排序:
employeenames
答案 2 :(得分:0)
给予
let employee: [String] = ["James", "Tom", "Ben", "Jim"]
您可以简单地写
let firstCharacters = employee.compactMap { $0.first }
结果
print(firstCharacters)
["J", "T", "B", "J"]
如果要对首字母进行排序,可以添加此行
let sortedFirstCharacters = firstCharacters.sorted()
["B", "J", "J", "T"]
let occurrencies = NSCountedSet(array: firstCharacters)
let occurrenciesOfJ = occurrencies.count(for: Character("J"))
// 2