Python 对具有字符串和整数值的列表进行数字排序
我正在寻找一个可以对列表进行排序的代码,例如包含整数和字符串的列表x。然后,代码将对列表x进行排序,这样整数值将根据字符串进行排序。到目前为止,我已经尝试了这个代码,但它不工作Python 对具有字符串和整数值的列表进行数字排序,python,sorting,Python,Sorting,我正在寻找一个可以对列表进行排序的代码,例如包含整数和字符串的列表x。然后,代码将对列表x进行排序,这样整数值将根据字符串进行排序。到目前为止,我已经尝试了这个代码,但它不工作 x =["a" 2,"c" 10, "b" 5] x.sort() print (x) 我希望结果是 ["a" 2 "b" 5 "C" 10] 因此,列表按递增顺序进行数字排序,字符串也会打印出来 如果我正确地进行了扣除,您还希望结果列表中包含一个整数,而原始列表中包含一个整数(字符也是如此) 我认为没有现成的方法可
x =["a" 2,"c" 10, "b" 5]
x.sort()
print (x)
我希望结果是
["a" 2 "b" 5 "C" 10]
因此,列表按递增顺序进行数字排序,字符串也会打印出来 如果我正确地进行了扣除,您还希望结果列表中包含一个整数,而原始列表中包含一个整数(字符也是如此)
我认为没有现成的方法可以做到这一点。一种可能的方法是将列表分成另外两个:一个是整数,一个是字符。然后,在对每个列表进行排序后,您可以根据所需的整数和字符位置合并它们。使用嵌套的iterable将字母与数字配对,然后按第二个元素对项目进行排序:
# just pairs.sort(key = lambda x: x[1])
pairs = [('a', 2), ('c', 10), ('b', 5)]
我认为这些元素是分开的。下面的代码可能会有所帮助,您可以根据需要在except块中填充或删除print语句
x =["a", 2,"c", 10, "b", 5]
numbers = []
letters = []
for element in x:
try:
numbers.append(int(element))
except:
letters.append(str(element))
numbers.sort()
letters.sort()
numbers.reverse()
letters.reverse()
for index,item in enumerate(x):
try:
print int(item),
x[index] = numbers.pop()
except ValueError:
x[index] = letters.pop()
print "\n"+ str(x)
使用元组列表,然后根据需要对它们进行排序,例如:
x = [('b',5),('a',2),('c',10)]
x.sort() # This will sort them based on item[0] of each tuple
x.sort(key=lambda s: s[1]) # This will sort them based on item[1] of each tuple
x = {'b':5,'a':2,'c':10}#This will be automatically sorted based on the key of each element
另一种方法是使用字典而不是元组列表,例如:
x = [('b',5),('a',2),('c',10)]
x.sort() # This will sort them based on item[0] of each tuple
x.sort(key=lambda s: s[1]) # This will sort them based on item[1] of each tuple
x = {'b':5,'a':2,'c':10}#This will be automatically sorted based on the key of each element
如果打印x,您将获得:
{'a': 2, 'c': 10, 'b': 5}
如果要根据每个元素的值对其进行排序,则:
x = sorted(x.items(), key=lambda s:s[1])
这将创建一个新的元组列表,因为sorted()返回“new”排序列表,因此结果将是:
[('a', 2), ('b', 5), ('c', 10)]
该列表应该是什么数据类型?
[“a”2,“c”10,“b”5]
不是有效的python语法。请看,我正在尝试将字符串与数字关联,因此a与2关联,c与10关联。如果您省略数字,这应该可以按预期进行。您至少应该阅读教程,直到达到为止。我的结果是,['a',2',b',5',c',10]非常感谢,这真的很有帮助