Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对具有字符串和整数值的列表进行数字排序_Python_Sorting - Fatal编程技术网

Python 对具有字符串和整数值的列表进行数字排序

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。然后,代码将对列表x进行排序,这样整数值将根据字符串进行排序。到目前为止,我已经尝试了这个代码,但它不工作

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]非常感谢,这真的很有帮助