2014-08-30 129 views
1

我有一個包含幾個鍵和值,比如字典:什麼是打印在Python從字典中seleced鍵值最簡單的方法

d = {'1' : "whatever", '2' : "something", '3' : "other", '4' : "more" ...etc} 

我想很快從代碼打印選定的值,例如以下鍵的值:1,3,20,23,45,46等

我知道我可以通過值打印值:

print d['1'] + d['3'] +d['20'] + d['23'] + d['45'] + d['46'] 

但會採取long類型和數量序列在視覺上不清晰河什麼是打印出所選值最簡單的方法,同時保持序列visualy容易閱讀(理想像print d['1','3','20','23','45','46']

回答

1

我認爲這個解決方案是最容易理解的:

keys_to_print = ['1', '3', '20', '23', '45', '46'] 
for key in keys_to_print: 
    print d[key] + ' ', 

這只是通過所有要打印其值的鍵循環。

+1

你可能想要做d.get(鍵,無),以避免任何鍵錯誤 – skzryzg 2014-08-30 12:15:22

+0

感謝所有的你們,但這個答案似乎最簡單和像魅力一樣工作。謝謝laurencevs! – user3210787 2014-08-30 12:20:43

+0

@skzryzg,d.get會默認返回None – 2014-08-30 13:35:30

2

您可以與map功能結合dict.get

map(d.get, ['1', '3', '20', '23', '45', '46']) 

這會給你相應的值,如清單:

['whatever', 'other', 'something', 'more'] 

您可以用打印出來0

print ' '.join(map(d.get, ['1', '3', '20', '23', '45', '46'])) 
1

有幾種方法可以做到這一點。

使用operator.itemgetterstr.join

>>> from operator import itemgetter 
>>> keys = ['1', '3', '4', '2'] 
>>> print ' '.join(itemgetter(*keys)(d)) 
whatever other more something 
>>> print ' '.join(itemgetter('1', '3', '4', '2')(d)) #without a `keys` variable. 
whatever other more something 

使用str.join與發電機的表達:

>>> print ' '.join(d[k] for k in keys) 
whatever other more something 

如果你使用Python 3或願意進口打印功能在Python 2:

>>> print(*itemgetter(*keys)(d), sep=' ') 
whatever other more something 
>>> print(*itemgetter('1', '3', '4', '2')(d), sep=' ') 
whatever other more something 
>>> print(*(d[k] for k in keys), sep=' ') 
whatever other more something 
1

我很驚訝沒有人哈哈小號提出了很明顯的:

d = {'1' : "whatever", '2' : "something", '3' : "other", '4' : "more", 
    '20': 'vingt', '23': 'vingt-trois', '45':'quarante-cinq', '46':'quarante-six' } 
keys_to_print = ['1', '3', '20', '23', '45', '46'] 

print ' '.join([d[key] for key in keys_to_print]) 

生產:

whatever other vingt vingt-trois quarante-cinq quarante-six 
+0

我會使用'''.join([key [key_key_to_print]中的鍵])' – 2014-08-30 13:37:14

+0

@Padraic會有什麼好處? – 2014-08-30 13:45:28

+1

使用'''.join([d [key]用於keys_to_print中的鍵))效率更高 – 2014-08-30 13:58:57

相關問題