#
d, g, e, c, f, b, o, a input[] = {"bed", "dog", "dear", "eye"},dear, dog, eye, bed
#
pythonc++
#(python)
#! /usr/bin/env python
#coding:utf-8
def char_to_number(by_list,char): #
try:
return by_list.index(char)
except:
return 1000
def sort_by_list(by_list,input_list):
result={}
for word in input_list:
number_list = [char_to_number(by_list,word[i]) for i in range(len(word))]
#{"good":[2,3,3,1],"book":[1,3,3,0]}
result[word] = number_list
#result[(key1,value1),(key2,value2),...]valuekeyv[0]
return [v[0] for v in sorted(result.items(),lambda x,y:cmp(x[1],y[1]))]
if __name__=="__main__":
word = ["bed","dog","dear","eye"]
by_string = ['d','g','e','c','f','b','o','a']
print "the word list is:"
print word
print "\nwill sorted by:"
print by_string
print "\nthe result is:"
print sort_by_list(by_string,word)
# racket 5.2.1)
****
```racket
#lang racket
; filter-by-1st-char
; a-ch a-str
; a-ch a-str
; a-str, '()
(define (filter-by-1st-char a-ch a-str)
(if (char=? a-ch (string-ref a-str 0))
(list a-word) '()))
; sort-words-by-char-list
; char-list,
; word-list
; word-list
; char-list
; a-z
(define (sort-words-by-char-list char-list word-list)
(let
([sorted-word-list '()]) ; word
(for ([ch char-list])
(for ([wd word-list])
(set! sorted-word-list
(append sorted-word-list ;
(filter-by-1st-char ch wd)))))
sorted-word-list))
; (dear dog eye bed)
(displayln
(sort-words-by-char-list "dgecfboa" '("dear" "dog" "eye" "bed")))
```