好,考虑您的数据如下
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什么?要求具体产出的具体投入是否太麻烦了?只是使用'特征'*根本没有帮助*。 –