以混合数据类型顺序排序混合python列表

时间:2017-05-08 17:54:23

标签: python list sorting

我有一个像这样['car', 'truck', 8, 4, 'bus', 6, 1]的列表,输出应该是['bus', 'car', 1, 4, 'truck', 6, 8]。其他的话应该按字母顺序对所有单词进行排序,并按数字顺序对所有整数进行排序。我怎么能这样做?

1 个答案:

答案 0 :(得分: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]