好,考慮您的數據如下
A 1 7 4 5 6
A 2 6 5 4 7
A 3 7 7 5 4
B 1 7 4 5 6
B 2 6 5 4 7
B 3 7 7 5 4
其中第一列是家庭,第二列是爲person_id和所有後續列的特徵。
一些超級髒和超級草草編寫的代碼下面似乎給你你想要
file_lines = []
out_list = []
final_out = []
def read_file():
global file_lines
with open("sample.txt", 'r') as fd:
file_lines = fd.read().splitlines()
print file_lines
def make_output():
global file_lines, out_list, final_out
out_line = []
for line1 in file_lines:
for line2 in file_lines:
line1c = line1.split(" ")
line2c = line2.split(" ")
if line1c[0] == line2c[0]:
if line1c[1] >= line2c[1]:
continue
else:
out_list = []
out_list.append(line1c[0])
out_list.append(line1c[1])
out_list.append(line2c[1])
for i in range(2, len(line1c)):
out_list.append(line1c[i])
out_list.append(line2c[i])
print " ".join(out_list)
read_file()
make_output()
什麼打印的輸出是
A 1 2 7 6 4 5 5 4 6 7
A 1 3 7 7 4 7 5 5 6 4
A 2 1 6 7 5 4 4 5 7 6
A 2 3 6 7 5 7 4 5 7 4
A 3 1 7 7 7 4 5 5 4 6
A 3 2 7 6 7 5 5 4 4 7
B 1 2 7 6 4 5 5 4 6 7
B 1 3 7 7 4 7 5 5 6 4
B 2 1 6 7 5 4 4 5 7 6
B 2 3 6 7 5 7 4 5 7 4
B 3 1 7 7 7 4 5 5 4 6
B 3 2 7 6 7 5 5 4 4 7
正如你可以看到在家庭的人1相比與2和3. 2與1和3進行比較,3與1和2進行比較。
顯然會有重複,因爲每個人都會與其他人進行比較他的家人兩次。
通過維護與誰進行比較的列表來清除此問題是微不足道的。
P.S:我知道腳本真的很髒,但我只是想說明我做了什麼。不寫產品代碼
編輯:我想寫一個稍微複雜的重複卸妝。但是由於數據非常簡單,繼續標準的一個小修改解決了它。此編輯後的輸出是
A 1 2 7 6 4 5 5 4 6 7
A 1 3 7 7 4 7 5 5 6 4
A 2 3 6 7 5 7 4 5 7 4
B 1 2 7 6 4 5 5 4 6 7
B 1 3 7 7 4 7 5 5 6 4
B 2 3 6 7 5 7 4 5 7 4
其不含重複的
_where A被家庭,前2號的人相比,第三和第四數字trait1如測量每個人,最終的數字是特質2,例如每個人的BMI值。你可以詳細說明這是什麼意思嗎?所以第三價值屬於第一人,第四價屬於第二人?或者他們有些差異? –
@SrinivasSuresh Definetely!對不起,這有點令人困惑!所以我試圖將家庭中的每個親屬及其特徵與他們每個親屬的特徵進行比較。因此,在所需的輸出,列開始與兩個7的和正在特質,每個特質有兩個號碼(每個人) –
@ H.Minear什麼?要求具體產出的具體投入是否太麻煩了?只是使用'特徵'*根本沒有幫助*。 –