什么是在python中从字典中打印所选键值的最简单方法

时间:2014-08-30 11:58:21

标签: python dictionary

我有一个包含几个键和值的字典,即:

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']

但是这需要很长时间才能打字并且数字序列在视觉上不清楚。打印选定值的最简单方法是什么,同时保持序列的容易阅读(理想情况下是print d['1','3','20','23','45','46']

4 个答案:

答案 0 :(得分:2)

您可以将dict.getmap函数结合使用:

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

这将为您提供相应值的列表,例如:

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

您可以使用以下方式打印它们:

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

答案 1 :(得分:1)

我认为这个解决方案最容易理解:

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

这只是循环遍历要打印其值的所有键。

答案 2 :(得分: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

答案 3 :(得分: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