私は持っている
{key1:value1, key2:value2, etc}
私はそれがなりたい:
[key1,value1,key2,value2] , if certain keys match certain criteria.
可能な限りPythonで行うにはどうすればよいですか?
ありがとう!
私は持っている
{key1:value1, key2:value2, etc}
私はそれがなりたい:
[key1,value1,key2,value2] , if certain keys match certain criteria.
可能な限りPythonで行うにはどうすればよいですか?
ありがとう!
これでうまくいくはずです:
[y for x in dict.items() for y in x]
例えば:
dict = {'one': 1, 'two': 2}
print([y for x in dict.items() for y in x])
これは印刷されます:
['two', 2, 'one', 1]
を指定するdict
と、これはすべてのアイテムをタプルに結合します
sum(dict.items(),())
タプルではなくリストが必要な場合
list(sum(dict.items(),()))
例えば
dict = {"We": "Love", "Your" : "Dict"}
x = list(sum(dict.items(),()))
x
その時は
['We', 'Love', 'Your', 'Dict']
最も効率的 (必ずしも最も読みやすい、または Python が最も効率的であるとは限りません)
from itertools import chain
d = { 3: 2, 7: 9, 4: 5 } # etc...
mylist = list(chain.from_iterable(d.iteritems()))
リストの具体化を除けば、すべてが反復子として保持されます。
このコードはあなたの問題を解決するはずです:
myList = []
for tup in myDict.iteritems():
myList.extend(tup)
>>> myList
[1, 1, 2, 2, 3, 3]
別のエントリ/回答:
import itertools
dict = {'one': 1, 'two': 2}
bl = [[k, v] for k, v in dict.items()]
list(itertools.chain(*bl))
収量
['two', 2, 'one', 1]
速度が重要な場合は、extendを使用して、キーと値のペアを空のリストに追加します。
l=[]
for t in sorted(d.items()):
return l.extend(t)
>>> d={'key1':'val1','key2':'val2'}
>>> l=[]
>>> for t in sorted(d.items()):
... l.extend(t)
...
>>> l
['key1', 'val1', 'key2', 'val2']
この形式は、高速であるだけでなく、各キーと値のペアにロジックを追加するのが簡単です。
速度の比較:
d={'key1':'val1','key2':'val2'}
def f1():
l=[]
for t in d.items():
return l.extend(t)
def f2():
return [y for x in d.items() for y in x]
cmpthese.cmpthese([f1,f2])
プリント:
rate/sec f2 f1
f2 908,348 -- -33.1%
f1 1,358,105 49.5% --
>>> a = {"lol": 1 }
>>> l = []
>>> for k in a.keys():
... l.append( k )
... l.append( a[k] )
...
>>> l
['lol', 1]