2012-10-26 64 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')] 
>>>