我已經輸出結構如下:多行排序輸出 - 蟒蛇
0 2
4 1
0 3
5 4
3 2
從代碼:
for entry in file:
a = entry.replace('\n',"")
b = a.replace(','," ")
b = b.split(" ")
print b
我想知道如果有一種方法來排序(從小到大)輸出跨越多行,接收輸出如下:
0 2
0 3
1 4
2 3
4 5
我已經輸出結構如下:多行排序輸出 - 蟒蛇
0 2
4 1
0 3
5 4
3 2
從代碼:
for entry in file:
a = entry.replace('\n',"")
b = a.replace(','," ")
b = b.split(" ")
print b
我想知道如果有一種方法來排序(從小到大)輸出跨越多行,接收輸出如下:
0 2
0 3
1 4
2 3
4 5
假設「f」包含您在上面顯示的文件,這樣做的工作
from operator import itemgetter
with open("f") as f:
pairs = [line.split(" ") for line in f.readlines()]
asc_pairs = [(min([int(x),int(y)]), max([int(x), int(y)]))
for x,y in pairs]
print "\n".join([" ".join([str(l) for l in k])
for k in sorted(asc_pairs, key=itemgetter(0,1))])
首先,你需要輸入存儲在一個2維數組的形式:
>>> input_file = open('input.txt', 'r')
>>> lines = input_file.readlines()
>>> lines = map(lambda line : line.strip().split(" "), lines)
>>> lines
[['0', '2'], ['4', '1'], ['0', '3'], ['5', '4'], ['3', '2']]
現在,您需要將各行第一排序。
>>> lines = [sorted(line) for line in lines]
然後你可以使用sort()
自己根據按鍵上的行進行排序,在這種情況下:第一個元素:
>>> lines.sort(key = lambda line : line[0])
>>> lines
[['0', '2'], ['0', '3'], ['1', '4'], ['2', '3'], ['4', '5']]
與Python你可以用「大於和比較String
類型/或不是」 < || >
考慮到位,從AZ或AZ字母n-1
字符將成爲百達的LESS THAN
性格n
,所以我覺得應該用數字也作爲Strings
這麼少:
for entry in file:
a = entry.replace('\n',"")
b = a.replace(','," ")
b = b.split(" ")
print b[0] if b[-1] > b[0] else b[-1]
如何生成此輸出?你能分享你的代碼嗎? – 2014-09-29 04:47:57
已編輯,它已從文本文件中繪製。注意我知道如何在整行上排序,而不是跨越多行。 – 2014-09-29 04:52:31
當你說:「我知道如何對整行進行排序,而不是跨越多行」,那麼你的意思是你可以先排序但不排第二行? – 2014-09-29 04:54:46