8

2つのOrderedDict辞書を比較するにはどうすればよいですか?

私の構造は次のとおりです。

dict_a = OrderedDict([(1,4), (2,5), (3,3), (4,5), (5,4), (6,4), (7,4), (8,3), (9,4)])

dict_b = OrderedDict([(1,4), (2,2), (3,1), (4,4), (5,6), (6,7), (7,4), (8,2), (9,5)])

for values in score_dict.items():
if values == course_dict.values():
    print 'match!'
else:
    print 'No match!'

それは繰り返され、両方のリストが順序付けられるので、1と7で一致する必要がありますか?前もって感謝します!

4

6 に答える 6

14

items()と組み込みzip()関数を使用できます。

for i, j in zip(dict_a.items(), dict_b.items()):
    if i == j:
        print(i)

出力:

(1, 4)
(7, 4)
于 2012-08-14T21:43:14.413 に答える
4

順序付けられた各場所で同じである交差する要素が必要な場合:

>>> from collections import OrderedDict
>>> dict_a = OrderedDict([(1,4), (2,5), (3,3), (4,5), (5,4), (6,4), (7,4), (8,3), (9,4)])
>>> dict_b = OrderedDict([(1,4), (2,2), (3,1), (4,4), (5,6), (6,7), (7,4), (8,2), (9,5)])
>>> [i1 for i1, i2 in zip(dict_a.iteritems(), dict_b.iteritems()) if i1 == i2]
[(1, 4), (7, 4)]

注文を気にしない場合:

>>> set(dict_a.items()).intersection(set(dict_b.items()))
set([(7, 4), (1, 4)])
于 2012-08-14T21:38:15.267 に答える
1
>>> for x in dict_a.items():
    if x in dict_b.items():
        print(x)


(1, 4)
(7, 4)
于 2012-08-14T21:38:37.750 に答える
1

アイテムを繰り返し処理して、同じであることがわかった場合は印刷することができます。

In [10]: for a, b in zip(dict_a.items(), dict_b.items()):
   ....:     if a == b:
   ....:         print True
   ....:     else:
   ....:         print False
于 2012-08-14T21:51:55.517 に答える
0

比較の一部としてOrderedDictにインデックスを含める場合:

>>> [a[0] for a, b in zip(dict_a.items(), dict_b.items()) if a == b]
[1, 7]

順序に関係なく、両方のOrderedDictsで同じ値を持つすべてのキーを取得する場合:

>>> [k for k, v in dict_a.items() if k in dict_b and dict_b[k] == v]
[1, 7]
于 2012-08-14T21:44:49.523 に答える
0

キーと値の両方を一致させたいが、それぞれの中での位置については気にしないと仮定しますOrderedDict

for k, v in dict_a.items():
  if v == dict_b[k]:
    print '(%s, %s)' % (k, v)
于 2012-08-14T21:43:15.767 に答える