排序混合python列表中支付数据类型订单

问题描述:

我有这样的列表['car', 'truck', 8, 4, 'bus', 6, 1]和输出应为['bus', 'car', 1, 4, 'truck', 6, 8]换句话说,它应该按字母顺序排序所有单词,并按数字顺序排序所有整数。我怎样才能做到这一点?排序混合python列表中支付数据类型订单

+3

什么你试过吗? –

+0

所有标准分类操作 –

+4

为什么4 ngoldbaum

通过分离型的值,然后进行排序每种类型的值,然后产生结果:

# 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然后测试它? –