2015-05-14 40 views
1

我有一組由對象轉換到數據幀爲:生成項目編號的元組之間共享ID的計數

Item  ID's 

1   100,101,102 
2   101,103,104 
3   100,201,202 

現在我想生成2元組/有序對,這使我計數在每對項目中共享的ID。所期望的輸出是:

Item Item Id's 
1 2  5 
1 3  5 
2 3  6 

列對應於每一個有序對的項目,如(1,2),(1,3),(2,3)等等,然後將第三列告訴我的原始表中有兩個項目有多少個ID。

+0

你的解釋是有點混亂,你找誰一個腳本來計算兩對項目中出現的id?即第1項和第2項都有5項,第2項和第3項中有6項? – SuperBiasedMan

+0

您可以舉例說明python數據結構所需的輸出,例如: '[(1,2),(3,4)]'這些與你的輸入數據有什麼關係。就目前而言,我不明白你想要什麼。 –

+0

是的,基本上我希望每一對物品都有獨特的ID。如果你看到我已經給出了你所解釋的樣本輸出。希望現在它清除你的疑問! – user2007506

回答

3

如果結構,必須是這樣的:

data = { 
    1: [100, 101, 102], 
    2: [101, 103, 104], 
    3: [100, 201, 202], 
} 

那麼這將幫助:

res = {} 
items = data.keys() 
for n, i in enumerate(items, start=1): 
    for j in items[n:]: 
     res[(i, j)] = len(
      set(data[i]).union(set(data[j])) 
     ) 

輸出:

res 
{(1, 2): 5, (1, 3): 5, (2, 3): 6} 
+0

謝謝@pavel .....感謝您的幫助...唯一的區別是我想要的最終輸出在列中顯示在所需的輸出...無論如何,我會弄清楚...再次感謝! – user2007506