2017-05-08 88 views
-2

我有這樣的列表['car', 'truck', 8, 4, 'bus', 6, 1]和輸出應爲['bus', 'car', 1, 4, 'truck', 6, 8]換句話說,它應該按字母順序排序所有單詞,並按數字順序排序所有整數。我怎樣才能做到這一點?排序混合python列表中支付數據類型訂單

+3

什麼你試過嗎? –

+0

所有標準分類操作 –

+4

爲什麼4 <'卡車'<6?如果你可以更正式地定義你的排序規則,它會更容易幫助。 – ngoldbaum

回答

6

通過分離型的值,然後進行排序每種類型的值,然後產生結果:

# The input 
a = ['car', 'truck', 8, 4, 'bus', 6, 1] 

# Collect the values by type 
d = {} 
for x in a: 
    d.setdefault(type(x), []).append(x) 

# Sort each type 
d = {k: iter(sorted(v)) for k, v in d.items()} 

# The result list 
result = [next(d[type(x)]) for x in a] 
print(result) 

打印:

['bus', 'car', 1, 4, 'truck', 6, 8] 
+0

我很好奇它將如何與負整數 –

+0

@AlicePolansky然後測試它? –