2016-11-09 10 views
-3

この辞書はキーと値で変更を続けます。だから、私はこれらのキーと値にアクセスし、期待される答えのように印刷したい。私がPythonに慣れていないので、どんな助けも高く評価されます。Python:defaultdictの場合、キーと値の出力

 dictionary= 
     {'key1': {'key10': [[66619, 'event1'], [64800, 'event2']]}, 
     'key2': {'key11': [[28250, 'event3'], [17960, 'event4'], [23484, 'event5'], [21945, 'event6']]}, 
     'key3': {'key12': [[359319, 'event7'], [322334, 'event8'], [273316, 'event9']], 'key13': [[452945, 'event10'], [414268, 'event11']]} 
     } 

予想の答え:

名:KEY1、住所:key10、番号:66619、Pin_code:EVENT1

名:KEY1、住所:key10、番号:64800、Pin_code:イベント2

名:KEY2、住所:key11、番号:28250、Pin_code:event3

名:KEY2、住所:key11、番号:17960、Pin_code:event4

名:KEY2、住所:key11、番号:23484、Pin_code:event5

名:KEY2、住所:key11、番号:21945、Pin_code:EVENT6

名:KEY3、住所:KEY12、数:359319、Pin_code:event7

名:KEY3、住所:KEY12、番号:322334、Pin_code:event8

名:KEY3、住所:KEY12、番号:273316、Pin_code:event9

名: key3、Address:key13、Numbe R:452945、Pin_code:event10

名:KEY3、住所:key13、番号:414268、Pin_code:event11

+0

「defaultdict」への参照は –

+0

です。興味があります:https://mail.python.org/pipermail/python-dev/2016-September/146327.html –

答えて

1

辞書は、自然の中で順不同です。 dict以内に注文を維持する場合は、collections.OrderedDict()を使用する必要があります。あたりとしてOrderedDict document:印刷します

from operator import itemgetter 

for k, v in sorted(dictionary.items(), key=itemgetter(0)): 
    for k1, v1 in sorted(v.items(), key=itemgetter(0)): 
     for content in v1: 
      print 'Name: {}, Address: {}, Number: {}, Pin: {}'.format(k, k1, content[0], content[1]) 

あなただけ実際にソートされたデータを保存せずにこのコンテンツを印刷したい場合は、同じくらい簡単 sorted()機能でそれを行うことが

Return an instance of a dict subclass, supporting the usual dict methods. An OrderedDict is a dict that remembers the order that keys were first inserted. If a new entry overwrites an existing entry, the original insertion position is left unchanged. Deleting an entry and reinserting it will move it to the end.

Name: key1, Address: key10, Number: 66619, Pin: event1 
Name: key1, Address: key10, Number: 64800, Pin: event2 
Name: key2, Address: key11, Number: 28250, Pin: event3 
Name: key2, Address: key11, Number: 17960, Pin: event4 
Name: key2, Address: key11, Number: 23484, Pin: event5 
Name: key2, Address: key11, Number: 21945, Pin: event6 
Name: key3, Address: key12, Number: 359319, Pin: event7 
Name: key3, Address: key12, Number: 322334, Pin: event8 
Name: key3, Address: key12, Number: 273316, Pin: event9 
Name: key3, Address: key13, Number: 452945, Pin: event10 
Name: key3, Address: key13, Number: 414268, Pin: event11 
+0

ImportError:名前itemgetterをインポートできません – Darsh

+0

申し訳ありませんが、私の悪い。それは 'from operator import itemgetter'です –

+1

ありがとうございます。それは本当に効果的です – Darsh

関連する問題