我需要创建一个包含数十亿个元素的排序列表,然后创建第二个列表,其中没有重复元素,其中包含第一个列表中每个元素的第一个字母以及第一个列表中此元素的位置。 例如:“Alfa”,“Bravo”,“Big”,“Bang”,“Charlie”==>第二个清单:“A”,1,“B”,2,“C”,5
答案 0 :(得分:0)
目前还不清楚天气你需要保留第一种排序的结果,然后生成第二个列表,以及为什么在这个问题上有VB6和Python标签。
如果您认为最终结果需要临时数组,那么您错了!
迭代遍历元素列表,最好是以批量方式(你加载一些元素,处理然后“卸载”/从内存中释放它们)。
从每个元素只取第一个字母。如果此字母尚未出现在您的输出数组中,请使用计数1
添加该字母。如果它已经在其中,请递增它的计数器。
所以
"Alfa","Charlie", "Big", "Bravo","Bang"
你会得到:
A => 1, C => 1, B => 3"
然后按键排序。
A => 1, B => 3, C => 1"
然后,重要的是,将每个前一个计数器添加到下一个计数器:
A => 1, B => 3+1, C => 1+3+1"
你得到你的输出。
PS这真的是学校/课程,作业,对吗?特技是找到那些优化。 ;)
答案 1 :(得分:0)
inlist=["Alfa", "Bravo","Big","Bang","Charlie"]
outlist=[]
for i in inlist:
alpha=i[0]
if not alpha in outlist:
outlist.append(alpha)
outlist.append(inlist.index(i)+1)
print(outlist)
答案 2 :(得分:0)
对于排序,Python 3.0及更高版本为列表内置了sort()方法。 所以要获得第一个排序的列表。
$result = [];
foreach ($DT_DATA as $key => $value) {
$group = $value->TYPE;
if (!isset($result[$group])) {
// init with array of required structure
$result[$group] = [
'TYPE' => $group,
'ITEMS' => [],
];
}
// add $value to `ITEMS` subarray
$result[$group]['ITEMS'][] = $value;
}
$result = array_values($result);
对于第二个问题,@przemo_li的回答是最有效的