根据字典值中的单词对字符串进行排序

时间:2020-09-28 09:40:08

标签: python sorting

如何根据字典中的单词值对字符串进行排序?

a = 'A B'
b = {'B':0, 'A':1}

所需结果:

c = 'B A'

我尝试过的事情:

c = sorted(a, key=b.values())

但是出现错误:

TypeError:“ dict_values”对象不可调用

是否有一种简单的方法来对字符串中的单词进行排序?

更新

使用后:

" ".join(sorted(b, key=b.get))

我得到所有的b值,而我只想对字符串中存在的值进行排序。

a = 'A B'
b = {'B':0, 'A':1, 'C':2}

生产

'BAC`

我只需要:

'BA`

2 个答案:

答案 0 :(得分:3)

您已接近解决方案。不幸的是,可调用与字典不同,key必须是可调用(函数):

c = ' '.join(sorted(a.split(), key=lambda v: b[v]))

答案 1 :(得分:0)

您可以对列表进行排序,但不能对字符串进行排序,还需要将事物指定为“列表的元素”,因为字典的键不会映射到字符串...(可能是一种更好的方法对此措辞)。

无论如何,解决方案是拆分[[1;1]; [1;2]; [1;3]; [2;1]; [2;2]; [2;3]; [3;1]; [3;2]; [3;3]] ,然后应用排序:

a

输出:

c = sorted(a.split(), key=lambda x: b[x]) 

出于完整性考虑:

['B', 'A']