假設這些是我的清單:
oracle_files = [
(1, "__init__.py"),
(2, "price_calc.py"),
(3, "lang.py")]
predicted_files = [
(5, ["random.py","price_calc.py"]),
(2, ["__init__.py","price_calc.py"]),
(1, ["lang.py","__init__.py"])]
第一個串列是一個元組串列,其中我每個都有一個識別符號和一個字串。第二個是整數元組串列和字串串列
我的意圖是創建第三個串列,通過 ID(整數)與這兩個串列相交
輸出應如下所示:
result = [(2, "price_calc.py", ["__init__.py","price_calc.py"]),
(1, "__init__.py", ["lang.py","__init__.py"])]
你知道達到這個輸出的方法嗎?因為我沒有做對。
uj5u.com熱心網友回復:
這是使用dict的方法:
oracle_files = [(1, "__init__.py"), (2, "price_calc.py"), (3, "lang.py")]
predicted_files = [(5, ["random.py","price_calc.py"]), (2, ["__init__.py","price_calc.py"]), (1, ["lang.py","__init__.py"])]
dct1 = dict(oracle_files)
dct2 = dict(predicted_files)
result = [(k, dct1[k], dct2[k]) for k in dct1.keys() & dct2.keys()]
print(result) # [(1, '__init__.py', ['lang.py', '__init__.py']), (2, 'price_calc.py', ['__init__.py', 'price_calc.py'])]
這使用了一個方便的事實,即從中獲得的 dict 鍵dict.keys()表現得像一個集合。
鍵視圖類似于集合,因為它們的條目是唯一且可散列的。[...] 對于類似集合的視圖,為抽象基類 collections.abc.Set 定義的所有操作都可用(例如,、、
==或<)^。https://docs.python.org/3/library/stdtypes.html#dictionary-view-objects
uj5u.com熱心網友回復:
我認為這可以滿足您的要求。
oracle_files = [(1, "__init__.py"), (2, "price_calc.py"), (3, "lang.py")]
predicted_files = [(5, ["random.py","price_calc.py"]), (2, ["__init__.py","price_calc.py"]), (1, ["lang.py","__init__.py"])]
dct = dict(oracle_files)
for k,v in predicted_files:
if k in dct:
dct[k] = (dct[k], v)
print(dct)
outlist = [(k,) v for k,v in dct.items() if isinstance(v,tuple)]
print(outlist)
輸出:
{1: ('__init__.py', ['lang.py', '__init__.py']), 2: ('price_calc.py', ['__init__.py', 'price_calc.py']), 3: 'lang.py'}
[(1, '__init__.py', ['lang.py', '__init__.py']), (2, 'price_calc.py', ['__init__.py', 'price_calc.py'])]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/419227.html
標籤:
上一篇:將兩個串列轉換為R中的資料框
