我有一个如下列表:
cba
和字符串cba
我想根据第一项和字符串[['c', 789], ['b', 456], ['a', 123]]
所在的顺序对列表进行排序:
while(scanner.hasNext()){
if (scanner.hasNextDouble()) {
System.out.println("double="+scanner.nextDouble());
}else{
System.out.println("string="+scanner.next());
}
}
最好的方法是什么?
答案 0 :(得分:7)
这适用于使用id Item Category Next_Category
1 "CRANBERRY 10PKTS CARTON, BLUEBERRY 20PKTS CARTON" 2 2
1 "CRANBERRY 10PKTS CARTON, BLUEBERRY 20PKTS CARTON" 2 1
1 "CRANBERRY 10PKTS CARTON" 2 1
1 "CRANBERRY 10PKTS CARTON" 2 2
1 "CRANBERRY 10PKTS CARTON, BLUEBERRY 20PKTS CARTON" 2 NA
/ key
list.sort
的{{1}}:
sorted
如果密钥字符串很大,重复的mylist = [['a', 123], ['b', 456], ['c', 789]]
mykey = 'cba'
mylist.sort(key=lambda x: mykey.index(x[0]))
调用效率会很低(如果这是一个问题,请将index
一次映射到索引,例如dict
,然后mykeydict = {k: i for i, k in enumerate(mykey)}
),但是对于短到中等长度,key=lambda x: mykeydict[x[0]]
调用足够便宜(index
每个项目只执行一次,而不是每次比较)。