比方说,我有一个列表:获取列表中的每一个键的字典值
a = ['apple', 'carrot']
和字典:
d ={'apple': [2,4], 'carrot': [44,33], 'orange': [345,667]}
如何使用列表一个作为重点在字典中查找d?我想要的结果将被写入以逗号分隔的文本文件这样
apple, carrot
2, 44
4, 33
从= [“苹果”,“桔子”]为a = [“苹果”修正了一个列表, “胡萝卜”]
比方说,我有一个列表:获取列表中的每一个键的字典值
a = ['apple', 'carrot']
和字典:
d ={'apple': [2,4], 'carrot': [44,33], 'orange': [345,667]}
如何使用列表一个作为重点在字典中查找d?我想要的结果将被写入以逗号分隔的文本文件这样
apple, carrot
2, 44
4, 33
从= [“苹果”,“桔子”]为a = [“苹果”修正了一个列表, “胡萝卜”]
我知道其他人都被速度更快,他们的解决方案是相似的,但这里是我采取的(要么接受,要么离开它):
a = ['apple', 'orange']
d ={'apple': [2,4], 'carrot': [44,33], 'orange': [345,667]}
fo = open('test.csv','w')
fo.write(',\t'.join(a)+'\n')
for y in xrange(len(d[a[0]])):
fo.write(',\t'.join([str(d[i][y]) for i in a])+'\n')
fo.close()
生成文件test.csv:
apple, orange
2, 345
4, 667
a = ['apple', 'orange']
d ={'apple': [2,4], 'carrot': [44,33], 'orange': [345,667]}
print ',\t'.join(a)
for row in zip(*(d[key] for key in a)):
print ',\t'.join(map(str, row))
输出:
apple, orange
2, 345
4, 667
* zip表达式中的*做什么? – user265978 2010-03-17 15:30:34
谢谢。我今天学到了东西。 williamx - check out http://docs.python.org/library/functions.html#zip – Mark 2010-03-17 15:37:20
@williamx *使它成为独立参数传递给zip(),而不是传递一个包含所有参数的参数的价值。它的记录在这里:http://docs.python.org/tutorial/controlflow.html#unpacking-argument-lists – 2010-03-17 16:30:04
问题已经很老了,但是为了将来的游客我建议使用list comprehensions拿到字典d的值键ķ在列表中a:
values = [ d[k] for k in a ]
这实际上是@DanielStutzbach所做的最高评分答案。它不是列表理解,而是使用生成器表达式,但在这种情况下几乎没有什么区别。 – Blckknght 2012-11-22 07:08:41
这功课吗? – 2010-03-17 14:51:42
不,这是我试图解决的问题的简化版本......苹果和胡萝卜只是为了说明问题。 – user265978 2010-03-17 14:53:04
您的标题有误导性。据我所知,你想获得列表中每个键的字典值,对吗? – dbemerlin 2010-03-17 14:58:06