0

いくつかのキーと値のペアを含む一連の辞書があります。それらを半分に分割し、各セットにいくつかの処理を適用する最も効率的な方法を知りたいです。私はそこにいくつかのライナーが存在すると思います...

つまり、辞書 A、B、C、D がある場合、結果のセット (A、B)、(A、C)、(A、D) が必要であり、残りのセット (C、D) は必要ありません。 ,(B,D),(B,C)

4

4 に答える 4

5

itertoolsワンライナーは通常、同じ文に属します。

>>> import itertools
>>> s = ['A', 'B', 'C', 'D']
>>> i = itertools.product(s[0], s[1:])
>>> list(i)
[('A', 'B'), ('A', 'C'), ('A', 'D')]
于 2012-10-26T08:34:13.770 に答える
1

次のようなものかもしれません:

例:

In [17]: from itertools import *

In [18]: lis=('a','b','c','d')

In [19]: for x in islice(combinations(lis,2),len(lis)-1):
    print x,
   ....:     
   ....:     
('a', 'b') ('a', 'c') ('a', 'd')
于 2012-10-26T08:32:58.607 に答える
0

これを試して:

l = ['a','b','c','d']
def foo(l):
    s0 = None
    for i in l:
        if s0 is None: 
            s0=i
            continue
        yield (s0,i)

for k in foo(l):
    print k

出力:

('a', 'b')
('a', 'c')
('a', 'd')
于 2012-10-26T08:44:06.980 に答える
0

敬意を表して、itertools明らかにやり過ぎです:

>>> s = 'ABCDE'
>>> [(s[0], x) for x in s[1:]]
[('A', 'B'), ('A', 'C'), ('A', 'D'), ('A', 'E')]
>>> 
于 2012-10-26T09:43:30.910 に答える