data= [('a ', 1), ('b ', 3), ('a ', 4), ('b', 2),]
タプルの最初の要素がリスト名で、2 番目の要素が値である 2 つのリストを取得するにはどうすればよいですか?
a= [1,4]
b= [3,2]
data= [('a ', 1), ('b ', 3), ('a ', 4), ('b', 2),]
タプルの最初の要素がリスト名で、2 番目の要素が値である 2 つのリストを取得するにはどうすればよいですか?
a= [1,4]
b= [3,2]
前の質問で説明したように、バインドする名前を変更しようとしないでください。【の左側something = 3
、つまり】トラブル以外の何物でもありません。dict
代わりに使用することができ、それdefaultdict
は物事を便利にするでしょう:
>>> data= [('a ', 1), ('b ', 3), ('a ', 4), ('b', 2),]
>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> for k, v in data:
... d[k.strip()].append(v)
...
>>> d
defaultdict(<type 'list'>, {'a': [1, 4], 'b': [3, 2]})
その後
>>> d['a']
[1, 4]
>>> d['b']
[3, 2]
動作します。
あなたの例のいくつかのキーには余分な空白があるので、私は以下を使用していstrip
ます:
In [11]: [x[1] for x in data if x[0].strip() == 'a']
Out[11]: [1, 4]
In [12]: [x[1] for x in data if x[0].strip() == 'b']
Out[12]: [3, 2]
レブの答えはあなたが探しているものです。さらに、ouは任意のキーでグループ化できます。
grouped = defaultdict(list)
[grouped[key].append(value) for key, value in data]
ちなみに、defaultdictは、検討する価値のある多くの組み込みタイプの1つです。あなたの日常の問題を解決するかもしれない多くのタイプと機能があります。少なくともoperator、itertools、functoolsモジュールを確認してください。
複数の変数を作成する代わりに、ここで辞書を使用する必要があります。
In [14]: data= [('a ', 1), ('b ', 3), ('a ', 4), ('b',2),]
In [15]: dic={}
In [16]: for k,v in data:
....: dic.setdefault(k.strip(),[]).append(v)
....:
In [18]: dic
Out[18]: {'a': [1, 4], 'b': [3, 2]}