Arrays 对数组进行分组

Arrays 对数组进行分组,arrays,pseudocode,mumps,Arrays,Pseudocode,Mumps,请…帮助我将此数组中的值分组 我有一个这样的数组 Arr(0) = 5 Arr(1) = ATC^1 Arr(2) = BTC^2 Arr(3) = ATC^3 Arr(4) = CTC^4 Arr(5) = BTC^5 我想要的最终结果是将Arr(0)更改为3,这是组中唯一TC的数量。ATC、BTC和CTC。我希望1、2和3的每个项都有数组中的分组值 Arr(0) = 3 Arr(1) = ATC:1,3 Arr(2)

请…帮助我将此数组中的值分组

我有一个这样的数组

    Arr(0) = 5
    Arr(1) = ATC^1
    Arr(2) = BTC^2
    Arr(3) = ATC^3
    Arr(4) = CTC^4
    Arr(5) = BTC^5
我想要的最终结果是将Arr(0)更改为3,这是组中唯一TC的数量。ATC、BTC和CTC。我希望1、2和3的每个项都有数组中的分组值

    Arr(0) = 3
    Arr(1) = ATC:1,3
    Arr(2) = BTC:2,5
    Arr(3) = CTC:4
我试图在腮腺炎中做到这一点,因此我没有内置的排序/分组功能


即使是伪代码也会有所帮助。

在腮腺炎中,您不需要排序函数,因为数组下标会自动排序

因此,最简单的方法是创建另一个数组,排序维度是第一条数据,值是第二条数据:

for i=1:1:Arr(0) set piece1=$piece(Arr(i),"^",1), piece2=$piece(Arr(i),"^",2), Temp(piece1)=$get(Temp(piece1))_piece2_","
运行该代码后,您将得到以下数组

Temp("ATC")="1,3,"
Temp("BTC")="2,5,"
Temp("CTC")="4,"
然后遍历该数组并构建所需的数组:

set i="",Brr=0 for  set i=$o(Temp(i)) quit:i=""  set Brr=Brr+1,Brr(Brr)=i_":"_Temp(i)
Brr(1)="ATC:1,3,"
Brr(2)="BTC:2,5,"
Brr(3)="CTC:4,"
您将获得所需的阵列:

set i="",Brr=0 for  set i=$o(Temp(i)) quit:i=""  set Brr=Brr+1,Brr(Brr)=i_":"_Temp(i)
Brr(1)="ATC:1,3,"
Brr(2)="BTC:2,5,"
Brr(3)="CTC:4,"

腮腺炎患者不需要排序功能,因为数组下标会自动排序

因此,最简单的方法是创建另一个数组,排序维度是第一条数据,值是第二条数据:

for i=1:1:Arr(0) set piece1=$piece(Arr(i),"^",1), piece2=$piece(Arr(i),"^",2), Temp(piece1)=$get(Temp(piece1))_piece2_","
运行该代码后,您将得到以下数组

Temp("ATC")="1,3,"
Temp("BTC")="2,5,"
Temp("CTC")="4,"
然后遍历该数组并构建所需的数组:

set i="",Brr=0 for  set i=$o(Temp(i)) quit:i=""  set Brr=Brr+1,Brr(Brr)=i_":"_Temp(i)
Brr(1)="ATC:1,3,"
Brr(2)="BTC:2,5,"
Brr(3)="CTC:4,"
您将获得所需的阵列:

set i="",Brr=0 for  set i=$o(Temp(i)) quit:i=""  set Brr=Brr+1,Brr(Brr)=i_":"_Temp(i)
Brr(1)="ATC:1,3,"
Brr(2)="BTC:2,5,"
Brr(3)="CTC:4,"
备选方案:

二维数组:

Temp("ATC",1)=""
Temp("ATC",3)=""
Temp("BTC",2)=""
Temp("BTC",5)=""
Temp("CTC",4)=""
$o
循环可以在第一级中按排序顺序查找项目,然后在第二级中运行嵌套的
$o
。或者,如果只需要排序列表,则只需第一个。如果要有选择地从列表中删除元素,只允许在数组中设置和删除注释,那么这将保存字符串逻辑

排序逻辑在流行性腮腺炎中并不常见,数据通常加载/存储到数组中,使其保持排序顺序。

替代:

二维数组:

Temp("ATC",1)=""
Temp("ATC",3)=""
Temp("BTC",2)=""
Temp("BTC",5)=""
Temp("CTC",4)=""
$o
循环可以在第一级中按排序顺序查找项目,然后在第二级中运行嵌套的
$o
。或者,如果只需要排序列表,则只需第一个。如果要有选择地从列表中删除元素,只允许在数组中设置和删除注释,那么这将保存字符串逻辑


排序逻辑在流行性腮腺炎中并不常见,数据通常加载/存储到数组中,这样可以保持它们的排序顺序。

谢谢!我没有意识到腮腺炎的这种功能。这很有道理。谢谢!我没有意识到腮腺炎的这种功能。这很有道理。