我有兩個清單
list1=['ABC','DBA','CBA','RBA','DCA','RMA']
list2=['ABC,'DBA','RMA']
預期產出
{'ABC':1,'DBA':1,'CBA':0,'RBA':0,'DCA':0,'RMA':1}
如果 list1 的值存在于 list2 中,則輸出字典的值將為 1,否則為 0。
uj5u.com熱心網友回復:
如果 的大小list2很小,您可以使用簡單的字典推導:
{key: int(key in list2) for key in list1}
但是,如果list2很長,你應該把它變成一個集合以便更快地查找:
lookup_set = set(list2)
{key: int(key in lookup_set) for key in list1}
這兩個輸出:
{'ABC': 1, 'DBA': 1, 'CBA': 0, 'RBA': 0, 'DCA': 0, 'RMA': 1}
uj5u.com熱心網友回復:
list1=['ABC','DBA','CBA','RBA','DCA','RMA']
list2=['ABC','DBA','RMA']
output = {}
for x in list1:
output[x] = 0
for x in list2:
if (x in output):
output[x] = 1
else:
output[x] = 0
print(output) # {'ABC': 1, 'DBA': 1, 'CBA': 0, 'RBA': 0, 'DCA': 0, 'RMA': 1}
uj5u.com熱心網友回復:
如果 list1 將始終包含所有可能的鍵
{s:int(s in list2) for s in list1}
但在一般情況下,其中任何一個都可能有不同的鍵,這將起作用
{s:int(s in list2 and s in list1) for s in list1 list2}
注意:因為 python 可以自動將布林值解釋為整數,所以轉換為 int 的唯一原因是如果您需要列印字典。否則我只會將值保留為 True/False
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/495556.html
