2016-07-27 6 views
0

リストの同じ第1要素を取得し、それをリストの第1要素として割り当てようとしています。私はそれがコレクションモジュールからdefaultdictを使用して行うことができると言われましたが、コレクションライブラリを使用せずにこれを行う方法があります。私が持っているものリストの同一の1番目の要素をとり、それをリストの最初の要素として割り当てます。

:私が何を探しています何

mapping = [['Tom', 'BTPS 1.500 625', 0.702604], ['Tom', 'BTPS 2.000 1225', 0.724939], ['Max', 'OBL 0.0 421', 0.766102], ['Max', 'DBR 3.250 721', 0.887863]] 

mapping = [['Tom',[ 'BTPS 1.500 625', 0.702604], [ 'BTPS 2.000 1225', 0.724939]],['Max',[ 'OBL 0.0 421', 0.766102],['DBR 3.250 721', 0.887863]]] 

答えて

1

あなたはどの最初の要素を使用して、名前でグループにデータを辞書/defaultdictを使用する必要があります残りのデータをスライスして値として追加します。

from collections import defaultdict 

d = defaultdict(list) 
for sub in mapping: 
    d[sub[0]].append(sub[1:]) 

print(d) 
あなたに与え

from collections import OrderedDict 

d = OrderedDict() 
for sub in mapping: 
    d.setdefault(sub[0],[]).append(sub[1:]) 

defaultdict(<type 'list'>, {'Max': [['OBL 0.0 421', 0.766102], ['DBR 3.250 721', 0.887863]], 'Tom': [['BTPS 1.500 625', 0.702604], ['BTPS 2.000 1225', 0.724939]]}) 

または順序が重要であればを、OrderedDictを使用します。任意の輸入なし

OrderedDict([('Tom', [['BTPS 1.500 625', 0.702604], ['BTPS 2.000 1225', 0.724939]]), ('Max', [['OBL 0.0 421', 0.766102], ['DBR 3.250 721', 0.887863]])]) 

を、普通のを使用するあなたを与えるだろう

再度使用する:dict.setdefault

d = {} 
for sub in mapping: 
    d.setdefault(sub[0],[]).append(sub[1:]) 

print(d) 

setdefaultを使用すると、キーがdictにない場合、リストとして値が追加されます。存在する場合は、値が追加されます。

+0

ありがとうございました。コレクションモジュールをインポートする必要はありませんか? –

+0

@ Ghale-Boong、はい、私は編集します –

0

マッピングの名前をループして辞書に追加することができます。

mapping = [['Tom', 'BTPS 1.500 625', 0.702604], ['Tom', 'BTPS 2.000 1225', 0.724939], ['Max', 'OBL 0.0 421', 0.766102], ['Max', 'DBR 3.250 721', 0.887863]] 

#using dictionary to store output 
mapping_dict=dict() 

for items in mapping: 
if items[0] in mapping_dict: 
    mapping_dict[items[0]].append([items[1],items[2]]) 
else: 
    mapping_dict[items[0]]=[items[1],items[2]] 

print mapping_dict 

Output: {'Max': ['OBL 0.0 421', 0.766102, ['DBR 3.250 721', 0.887863]], 'Tom': ['BTPS 1.500 625', 0.702604, ['BTPS 2.000 1225', 0.724939]]} 
関連する問題