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