比方說,我有一個列表:獲取列表中的每一個鍵的字典值
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