我有一个算法,会生成一个包含未知数量的子列表的列表,每个子列表中都有一个未知数量的字符串元素和一个浮点数。我需要按照这个浮点数对这些子列表进行排序,并保留子列表中字符串的顺序不变。
目前,我使用了下面链接中的一块代码来对其进行排序。但是我遇到了KeyError的问题。由于我以前没有接触过dict,所以我不确定该怎么做。如果有更好的方法,我也可以接受。链接如下:http://ideone.com/wr8UA 这些浮点数不是连续的。在运行时,数字偶尔会被跳过(在Ideone示例列表中它们是1.0、2.0、4.0;为了模拟这种情况)。它们也不在子列表中的任何特定位置,因此需要用多个for循环搜索它们。
希望我表述清楚了,我之前试图解释却只得到downvotes而不是关于什么让人困惑的问题。如果有什么不对的地方,请告诉我。谢谢大家!
编辑:请求在正文中放置代码。
目前,我使用了下面链接中的一块代码来对其进行排序。但是我遇到了KeyError的问题。由于我以前没有接触过dict,所以我不确定该怎么做。如果有更好的方法,我也可以接受。链接如下:http://ideone.com/wr8UA 这些浮点数不是连续的。在运行时,数字偶尔会被跳过(在Ideone示例列表中它们是1.0、2.0、4.0;为了模拟这种情况)。它们也不在子列表中的任何特定位置,因此需要用多个for循环搜索它们。
希望我表述清楚了,我之前试图解释却只得到downvotes而不是关于什么让人困惑的问题。如果有什么不对的地方,请告诉我。谢谢大家!
编辑:请求在正文中放置代码。
listed = [ ["1 NWZ", "1 RWZ", "2 NWZ", "2 RWZ", "1E HZ", "1W HZ", "1-2EHZ", 2.0, "2W HZ"],
["1 NWZ", "1W HZ", "3E FZ", "SNOK", "POK", 3.0, "1-2EHZ", "2E AK", "2W HZ"],
["1 BW", "1AW AS", "3E FZ", "1BWAK", "POK", "TESTK", "1-2EHZ", "2E AK", 1.0]]
dictionary={}
for sub_list in listed:
for value in sub_list:
if isinstance(value,float):
dictionary[str(value)]=sub_list
else:
pass
ordered_list=[]
for i in range(1,len(listed)+1):
if dictionary[str(i)]:
ordered_list.append(dictionary[str(i)])
for sub_list in ordered_list:
print sub_list