

li1を昇順に並べ替えた時にli2[i]も,最初のli1[i]とひも付けしたように並べ替えて2次元配列にして欲しいです。

[code]

    li1=[1, 1, 2, 3, 4, 1, 1, 2, 3, 4, 1, 1, 2, 3, 4]
    
    li2=[1, 10,40,70,80, 2,11,41,71,81,3,12,42,72,82]
    
[/code]

結果は以下の通りになると思います。

[code]

    li1=[1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4]
    
    
    li2=[[1,10,2,11,3,12],[40,41,42],[70,72],[80,82]]
    
[/code]

よろしくお願いします。


CC BY-SA 3.0
2015-11-26T10:16:44.480
19327
2015-11-27T00:22:53.553
13411
question
python
Pythonで１次元配列を昇順で並べ替え、その情報を他の配列に関連付けたい

[code]

    >>> li2 = [[li2[i1] for i1 in range(len(li1)) if li1[i1] == idx] for idx in sorted(set(li1))]
    
[/code]


CC BY-SA 3.0
2015-11-26T11:14:49.180
19333
2015-11-26T11:14:49.180
19327
answer


li1とli2を要素ごとに対応させたネストするリストを作ってgroupbyするのでどうでしょうか

[code]

    #!/usr/bin/python
    
    from operator import itemgetter
    from itertools import groupby
    from pprint import pprint as pp
    
    li1 = [1, 1, 2, 3, 4, 1, 1, 2, 3, 4, 1, 1, 2, 3, 4]
    li2 = [1, 10,40,70,80, 2,11,41,71,81,3,12,42,72,82]
    
    merge = zip(li1, li2)
    merge.sort(key=itemgetter(0))
    group = groupby(merge, itemgetter(0))
    li = [[item[1] for item in data] for (key, data) in group]
    
    pp(li)
    
[/code]

出力:

[code]

    [[1, 10, 2, 11, 3, 12], [40, 41, 42], [70, 71, 72], [80, 81, 82]]
    
[/code]


CC BY-SA 3.0
2015-11-26T12:32:46.727
19337
2015-11-27T00:22:53.553
2015-11-27T00:22:53.553
62
62
19327
answer