2012-04-23 3 views
2
LowKeys = dict(La = 'z', Lb = 'x', Lc = 'c', Ld = 'v', Le = 'b', Lf = 'n', Lg = 'm') 
MidKeys = dict(Ma = 'q', Mb = 'w', Mc = 'e', Md = 'r', Me = 't', Mf = 'y', Mg = 'u') 
HighKeys = dict(Ha = 'i', Hb = 'o', Hc = 'p', Hd = '[', He = ']') 
SharpLowKeys = dict(SLa = 's', SLc = 'f', SLd = 'g', SLf = 'j', SLg = 'k') 
FlatLowKeys = dict(FLa = 'a', FLb = 's', FLd = 'f', FLe = 'g', FLg = 'j') 
SharpMidKeys = dict(SMa = '2', SMc = '4', SMd = '5', SMf = '7', SMg = '8') 
FlatMidKeys = dict(FMa = '1', FMb = '2', FMd = '4', FMe = '5', FMg = '7') 
SharpHighKeys = dict(SHa = '9', SHc = '-', SHd = '=') 
FlatHighKeys = dict(FHa = '8', FHb = '9', FHd = '-', FHe = '=') 

notes = raw_input('Notes: ') 
notes = notes.split() 

Я хочу, чтобы заменить все элементы, которые появляются в обоих примечаниях и любой из dicts со значением dict.Заменить элементы в списке с использованием словаря

Ex:

notes = La, Ha, Lb 
notes = z, i, x 

Есть ли способ сделать это? Или лучший способ, чем то, что я пытаюсь?

ответ

3
allKeys = {} 
for subdict in (LowKeys, MidKeys, ..., FlatHighKeys): 
    allKeys.update(subdict) 

notes = [allKeys[note] for note in notes] 
+0

Не могли бы вы объяснить, что делают эти строки? Они выглядят немного трудно понять для меня. Кроме того, можем ли мы превратить эти строки в нечто более общее, а не специально для решения проблемы «примечаний»? Благодаря! – FaCoffee

1

Поместите все содержимое dicts в один большой dict, затем используйте понимание списка, чтобы вывести соответствующие значения из dict.

+0

Не могли бы вы объяснить часть понимания списка? – asqapro

+0

http://www.python.org/dev/peps/pep-0202/ –

Смежные вопросы