我正在嘗試爲下面的代碼片段編寫相應的列表理解。需要項目索引時的Python列表理解
# Initialize data.
queryRelDict = {'1': [1, 2, 3],
'2': [4, 5, 6],
'3': [11, 13, 14]}
related_docs_indices = [1, 2, 3, 4, 5, 6, 7, 8, 12, 13, 14]
relOrNot = [0] * k
for item in queryRelDict.keys():
for i in range(len(related_docs_indices)):
if related_docs_indices[i] + 1 in queryRelDict[item]:
relOrNot[i] = 1
基本上我有一本字典,其中每個鍵都有一個列表作爲它的值。現在,我的列表relOrNot[i]
需要爲1,如果ith
related_docs_indices
的元素位於字典中的任一列表中。
所需的輸出是:
[1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1]
我嘗試以下兩種變體,但無法獲得所需的輸出。
relOrNot2 = [1 for item in queryRelDict.keys() for i in range(len(related_docs_indices)) if related_docs_indices[i] + 1 in queryRelDict[item]]
但輸出
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
我也試過
relOrNot2 = [1 if related_docs_indices[i] + 1 in queryRelDict[item] else 0 for item in queryRelDict.keys() for i in range(len(related_docs_indices))]
相應的輸出:
[0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0]
什麼修改是必要的,以獲得所需的輸出?
我無法理解所需的輸出。它的長度與'related_docs_indices'不一樣。 – HYRY
不要這樣做 - 你的代碼是完全正常的(特別是在可讀性方面);列表理解會違反[PEP-8(Python代碼樣式指南)](http://www.python.org/dev/peps/pep-0008/)和Python的Zen。 –
你確定這是你想要的輸出嗎?它的長度是30,但是你在三個長度爲11的索引上迭代三個鍵。不是所需的結果長度是33嗎? – Alexander