2014-08-30 83 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

相关问题