質問が正しいかどうかはわかりませんが、次のことを意味します。
私が辞書を持っているとしましょう
p = {'A' : 1, 'B' : 2, 'C' : 3}
それから私はリストを持っています
q = ['A', 'B']       
結果が 3 になるように q を合計するにはどうすればよいですか?
ありがとう!
質問が正しいかどうかはわかりませんが、次のことを意味します。
私が辞書を持っているとしましょう
p = {'A' : 1, 'B' : 2, 'C' : 3}
それから私はリストを持っています
q = ['A', 'B']       
結果が 3 になるように q を合計するにはどうすればよいですか?
ありがとう!
組み込み関数sumとジェネレーター式を使用します。
>>> p = {'A' : 1, 'B' : 2, 'C' : 3}
>>> q = ['A','B']
#using generator expression
>>> sum(p.get(x,0) for x in q)
3
#using list comprehension, not memory efficient
>>> sum( [p.get(x,0) for x in q] )
3
の要素qが見つからないp場合はdict.get、デフォルト値が返される0ため、エラーは発生しません。
ヘルプdict.get:
>>> print dict.get.__doc__
D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.
リスト内包表記のバージョンは、次とほぼ同等です。
sums = []
for x in q:                  #loop over each item in q            
    sums.append(p.get(x,0))  #fetch the value of item from p and append it to sums  
print sum(sums)              # sum the list sums
(p.get(x,0) for x in q)メモリ内にリスト全体を生成する代わりに、一度に 1 つの値を返します。
summ = 0
for x in q:
    summ += p.get(x,0)
print summ
別のアプローチ: が のようなオブジェクトを返すという事実を利用viewkeysします。大きなリストの場合、これによりパフォーマンスが向上します。dictionaryset
sum(p[x] for x in p.viewkeys() & q)