2014-12-21 5 views
0

У меня есть сетка 10x10. эта сетка находится в словаре p_w. когда я распечатать p_w я получаю это:python print словарь кортежи в формате сетки

{(7, 3): 0.01, (6, 9): 0.01, (0, 7): 0.01, (1, 6): 0.01, (3, 7): 0.01, (2, 5): 0.01, (8, 5): 0.01, (5, 8): 0.01, (4, 0): 0.01, (9, 0): 0.01, 
(6, 7): 0.01, (5, 5): 0.01, (7, 6): 0.01, (0, 4): 0.01, (1, 1): 0.01, (3, 2): 0.01, (2, 6): 0.01, (8, 2): 0.01, (4, 5): 0.01, (9, 3): 0.01, 
(6, 0): 0.01, (7, 5): 0.01, (0, 1): 0.01, (3, 1): 0.01, (9, 9): 0.01, (7, 8): 0.01, (2, 1): 0.01, (8, 9): 0.01, (9, 4): 0.01, (5, 1): 0.01, 
(7, 2): 0.01, (1, 5): 0.01, (3, 6): 0.01, (2, 2): 0.01, (8, 6): 0.01, (4, 1): 0.01, (9, 7): 0.01, (6, 4): 0.01, (5, 4): 0.01, (7, 1): 0.01, 
(0, 5): 0.01, (1, 0): 0.01, (0, 8): 0.01, (3, 5): 0.01, (2, 7): 0.01, (8, 3): 0.01, (4, 6): 0.01, (9, 2): 0.01, (6, 1): 0.01, (5, 7): 0.01, 
(7, 4): 0.01, (0, 2): 0.01, (1, 3): 0.01, (4, 8): 0.01, (3, 0): 0.01, (2, 8): 0.01, (9, 8): 0.01, (8, 0): 0.01, (6, 2): 0.01, (5, 0): 0.01, 
(1, 4): 0.01, (3, 9): 0.01, (2, 3): 0.01, (1, 9): 0.01, (8, 7): 0.01, (4, 2): 0.01, (9, 6): 0.01, (6, 5): 0.01, (5, 3): 0.01, (7, 0): 0.01, 
(6, 8): 0.01, (0, 6): 0.01, (1, 7): 0.01, (0, 9): 0.01, (3, 4): 0.01, (2, 4): 0.01, (8, 4): 0.01, (5, 9): 0.01, (4, 7): 0.01, (9, 1): 0.01, 
(6, 6): 0.01, (5, 6): 0.01, (7, 7): 0.01, (0, 3): 0.01, (1, 2): 0.01, (4, 9): 0.01, (3, 3): 0.01, (2, 9): 0.01, (8, 1): 0.01, (4, 4): 0.01, 
(6, 3): 0.01, (0, 0): 0.01, (7, 9): 0.01, (3, 8): 0.01, (2, 0): 0.01, (1, 8): 0.01, (8, 8): 0.01, (4, 3): 0.01, (9, 5): 0.01, (5, 2): 0.01} 

я пытаюсь получить его так, чтобы его печать в порядке координат. например

{(0,0):0.01, (0.1):0.01, (0,2):0.01... etc 

Как заказать кортежи в словаре я curreny есть:

p_w = {} 
for x in range(xwhale): 
    for y in range(ywhale): 
     p_w[x,y] = 0.01   

self.p_w = p_w 

print p_w 

PS. im все еще совершенно новый для python

+0

У диктанов нет никакого заказа. Проверьте информацию, указанную в теге [ordereddictionary] (http://stackoverflow.com/tags/ordereddictionary/info), который вы использовали. –

+0

Вы пробовали 'OrderedDict'? –

ответ

0

Вы должны использовать OrderedDict:

>>> from collections import OrderedDict 
>>> a=OrderedDict() 
>>> s=sorted(d.items()) 
>>> for i,j in s: 
... a.update({i:j}) 
... 
>>> a 
OrderedDict([((0, 0), 0.01), ((0, 1), 0.01), ((0, 2), 0.01), ((0, 3), 0.01), ((0, 4), 0.01), ((0, 5), 0.01), ((0, 6), 0.01), ((0, 7), 0.01), ((0, 8), 0.01), ((0, 9), 0.01), ((1, 0), 0.01), ((1, 1), 0.01), ((1, 2), 0.01), ((1, 3), 0.01), ((1, 4), 0.01), ((1, 5), 0.01), ((1, 6), 0.01), ((1, 7), 0.01), ((1, 8), 0.01), ((1, 9), 0.01), ((2, 0), 0.01), ((2, 1), 0.01), ((2, 2), 0.01), ((2, 3), 0.01), ((2, 4), 0.01), ((2, 5), 0.01), ((2, 6), 0.01), ((2, 7), 0.01), ((2, 8), 0.01), ((2, 9), 0.01), ((3, 0), 0.01), ((3, 1), 0.01), ((3, 2), 0.01), ((3, 3), 0.01), ((3, 4), 0.01), ((3, 5), 0.01), ((3, 6), 0.01), ((3, 7), 0.01), ((3, 8), 0.01), ((3, 9), 0.01), ((4, 0), 0.01), ((4, 1), 0.01), ((4, 2), 0.01), ((4, 3), 0.01), ((4, 4), 0.01), ((4, 5), 0.01), ((4, 6), 0.01), ((4, 7), 0.01), ((4, 8), 0.01), ((4, 9), 0.01), ((5, 0), 0.01), ((5, 1), 0.01), ((5, 2), 0.01), ((5, 3), 0.01), ((5, 4), 0.01), ((5, 5), 0.01), ((5, 6), 0.01), ((5, 7), 0.01), ((5, 8), 0.01), ((5, 9), 0.01), ((6, 0), 0.01), ((6, 1), 0.01), ((6, 2), 0.01), ((6, 3), 0.01), ((6, 4), 0.01), ((6, 5), 0.01), ((6, 6), 0.01), ((6, 7), 0.01), ((6, 8), 0.01), ((6, 9), 0.01), ((7, 0), 0.01), ((7, 1), 0.01), ((7, 2), 0.01), ((7, 3), 0.01), ((7, 4), 0.01), ((7, 5), 0.01), ((7, 6), 0.01), ((7, 7), 0.01), ((7, 8), 0.01), ((7, 9), 0.01), ((8, 0), 0.01), ((8, 1), 0.01), ((8, 2), 0.01), ((8, 3), 0.01), ((8, 4), 0.01), ((8, 5), 0.01), ((8, 6), 0.01), ((8, 7), 0.01), ((8, 8), 0.01), ((8, 9), 0.01), ((9, 0), 0.01), ((9, 1), 0.01), ((9, 2), 0.01), ((9, 3), 0.01), ((9, 4), 0.01), ((9, 5), 0.01), ((9, 6), 0.01), ((9, 7), 0.01), ((9, 8), 0.01), ((9, 9), 0.01)]) 
0

Я бы использовал OrderdDict OrderedDict (вы можете увидеть больше здесь: enter link description here Решает ли ваша проблема, иначе для цикла, как вы говорите, это единственный другой вариант, который приходит мне на ум .. :-)

+1

Nvm. используйте метод OrderedDict или @xyres, не делайте for-for-loop .. :-) –

0

Sort существующий Dict ключом и использовать OrderedDict для поддержания порядка.

from collections import OrderedDict 

xwhale = ywhale = 10 

p_w = {} 
for x in range(xwhale): 
    for y in range(ywhale): 
     p_w[x,y] = 0.01   

print p_w 

op_w = OrderedDict(sorted(p_w.items(), key=lambda t: t[0])) 
print '\n\n' 
print op_w 
2

Я вижу почти каждый это рекомендуют OrderedDict, но я думаю, что, скорее всего, излишеством для простого print - лично я предпочел бы заменить print p_w с, например,

for x in range(xwhale): 
    for y in range(ywhale): 
     print '(%s,%s): %s' % (x, y, p_[x,y]), 
    print 

(добавить фигурные скобки и запятые к отпечаткам, если по какой-то странной причине вы хотите их, переключите x и y, если это более естественный способ показать вашу сетку и т. д. и т. д. - это просто общая идея!).

1
data = {(7, 3): 0.01, (6, 9): 0.01, (0, 7): 0.01, (1, 6): 0.01, (3, 7): 0.01, (2, 5): 0.01, (8, 5): 0.01, (5, 8): 0.01, (4, 0): 0.01, (9, 0): 0.01, 
(6, 7): 0.01, (5, 5): 0.01, (7, 6): 0.01, (0, 4): 0.01, (1, 1): 0.01, (3, 2): 0.01, (2, 6): 0.01, (8, 2): 0.01, (4, 5): 0.01, (9, 3): 0.01, 
(6, 0): 0.01, (7, 5): 0.01, (0, 1): 0.01, (3, 1): 0.01, (9, 9): 0.01, (7, 8): 0.01, (2, 1): 0.01, (8, 9): 0.01, (9, 4): 0.01, (5, 1): 0.01, 
(7, 2): 0.01, (1, 5): 0.01, (3, 6): 0.01, (2, 2): 0.01, (8, 6): 0.01, (4, 1): 0.01, (9, 7): 0.01, (6, 4): 0.01, (5, 4): 0.01, (7, 1): 0.01, 
(0, 5): 0.01, (1, 0): 0.01, (0, 8): 0.01, (3, 5): 0.01, (2, 7): 0.01, (8, 3): 0.01, (4, 6): 0.01, (9, 2): 0.01, (6, 1): 0.01, (5, 7): 0.01, 
(7, 4): 0.01, (0, 2): 0.01, (1, 3): 0.01, (4, 8): 0.01, (3, 0): 0.01, (2, 8): 0.01, (9, 8): 0.01, (8, 0): 0.01, (6, 2): 0.01, (5, 0): 0.01, 
(1, 4): 0.01, (3, 9): 0.01, (2, 3): 0.01, (1, 9): 0.01, (8, 7): 0.01, (4, 2): 0.01, (9, 6): 0.01, (6, 5): 0.01, (5, 3): 0.01, (7, 0): 0.01, 
(6, 8): 0.01, (0, 6): 0.01, (1, 7): 0.01, (0, 9): 0.01, (3, 4): 0.01, (2, 4): 0.01, (8, 4): 0.01, (5, 9): 0.01, (4, 7): 0.01, (9, 1): 0.01, 
(6, 6): 0.01, (5, 6): 0.01, (7, 7): 0.01, (0, 3): 0.01, (1, 2): 0.01, (4, 9): 0.01, (3, 3): 0.01, (2, 9): 0.01, (8, 1): 0.01, (4, 4): 0.01, 
(6, 3): 0.01, (0, 0): 0.01, (7, 9): 0.01, (3, 8): 0.01, (2, 0): 0.01, (1, 8): 0.01, (8, 8): 0.01, (4, 3): 0.01, (9, 5): 0.01, (5, 2): 0.01} 

for coords in sorted(data): # sorts the keys, data order unchanged 
    print '{0}: {1}'.format(coords, data[coords]) 
Смежные вопросы