2

それで、リストAと辞書Bに共通する単語があるかどうかを確認したいと思います。次に、一般的な単語 (キー) の値の合計が 10 より大きいかどうかを確認します。これを簡単な方法で実行できるようにしたいと考えています。

例 (正しく動作しない):

A = ['a','b','c','e']
B = {'a': 12, 'b': 8, 'c':3,'d':15}

TheSum = 0
for key,value in B.items():
    if key in A:
        TheSum += int(value)
        if TheSum > 10:
            print ("The sum of the values are higher than 10 and the words incommon are:")
            print (key,"=", value,"points")
        else:
            print ("Nothing in common")

印刷したい:

値の合計が 10 を超えており、共通していない単語は次のとおりです。

a = 12 ポイント

b = 8 ポイント

c = 3 ポイント

私の問題が理解できることを願っています。すべての for ステートメントと if ステートメントが乱雑になりすぎると思います。

4

2 に答える 2

4

私はsetジェネレーター式を使用します。表示しやすいのではないでしょうか。まず、共通要素を取得します。

>>> A = ['a','b','c','e']
>>> B = {'a': 12, 'b': 8, 'c':3,'d':15}
>>> set(A).intersection(B)
set(['a', 'c', 'b'])

そして、これらのキーに関連付けられた B の値の合計を取ることができます:

>>> common = set(A).intersection(B)
>>> sum(B[k] for k in common)
23

そして、これが 10 より大きい場合は何かを出力します。

現在、B のすべてのキーと値のペアをループして (OK)、キーが A にあるかどうかを確認しています (これは機能しますが、遅くなります。なぜなら、リストのメンバーシップをテストするために、キーが A にある場合は、TheSum を累積します。その部分は実際に機能します。

しかし、累積合計が10を超えた後、すべてのキーと値のペアを出力していますが、これはあなたが求めているものではないと思います。

于 2013-04-10T14:30:28.227 に答える