我有一个包含几个键和值的字典,即:
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']
?
答案 0 :(得分:2)
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.itemgetter
与str.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