2012-10-26 39 views
0

我有一组带有一些键值对的词典。我想知道最有效的方式将它们分成两半,然后对每组进行一些处理。如果我有字典A,B,C,D,我想得到结果集:(A,B),(A,C) ,(A,d),而不是其余组(C,d),(B,d),(B,C)Python中的分割集

+1

我不知道你在问什么。你能用代码展示你的一套词典和输出的例子吗? – deadly

回答

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') 
5

itertools和单线通常属于同一句话:

>>> import itertools 
>>> s = ['A', 'B', 'C', 'D'] 
>>> i = itertools.product(s[0], s[1:]) 
>>> list(i) 
[('A', 'B'), ('A', 'C'), ('A', 'D')] 
+0

打败我吧。 +1 –

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') 
0

恕我直言,itertools显然是矫枉过正:

>>> s = 'ABCDE' 
>>> [(s[0], x) for x in s[1:]] 
[('A', 'B'), ('A', 'C'), ('A', 'D'), ('A', 'E')] 
>>>