0

我有一组带有一些键值对的字典。我想知道将它们分成两半然后对每组应用一些处理的最有效方法。我想那里有一个班轮……

即,如果我有字典 A、B、C、D,我希望得到结果集:(A,B)、(A,C)、(A,D) 而不是剩余的集 (C,D) ,(B,D),(B,C)

4

4 回答 4

5

itertools和 one-liners 通常属于同一个句子:

>>> 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

恕我直言,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 回答
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 回答