我正在努力理解<=操作員的作業方式。
我有一個包含一個字典元素(只有一個元素)的串列,稱為result:
dict_items([('AGATC', '4'), ('AATG', '1'), ('TATC', '5')])
我還有一個字典元素串列(不止一個),稱為data:
dict_items([('name', 'Alice'), ('AGATC', '2'), ('AATG', '8'), ('TATC', '3')])
dict_items([('name', 'Bob'), ('AGATC', '4'), ('AATG', '1'), ('TATC', '5')])
dict_items([('name', 'Charlie'), ('AGATC', '3'), ('AATG', '2'), ('TATC', '5')])
有問題的代碼在這里:
# Check if any person in csv file matches output from dna_count
for row in data:
if result.items() <= row.items():
print(row["name"])
我知道它檢查是否有任何資料行與結果元素匹配,如果匹配,則從該行列印名稱,但是為什么運算子==不在那里作業,我需要使用<=,以及<=行為如何,因為result沒有名稱鍵,它是否跳過名稱鍵?
uj5u.com熱心網友回復:
鍵視圖是類似設定的,因為它們的條目是唯一且可散列的。如果所有值都是可散列的,因此這些
(key, value)對是唯一且可散列的,那么專案視圖也是類似集合的。[..] 對于類似集合的視圖,為抽象基類定義的所有操作collections.abc.Set都可用(例如==,<、 或^)。https://docs.python.org/3/library/stdtypes.html#dict-views
所以,你可以使用一套比較運算子這里了,result.items() <= row.items()如果測驗result.items()是一個子集的row.items()。子集意味著它包含一些專案但不包含任何其他專案。
這顯然是使這種比較成立的原因:
dict_items([('AGATC', '4'), ('AATG', '1'), ('TATC', '5')]) dict_items([('name', 'Bob'), ('AGATC', '4'), ('AATG', '1'), ('TATC', '5')])
這里的第一個“集合”是第二個“集合”的子集,但它不相等(因為它缺少一個專案)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/373897.html
上一篇:追加時的奇怪格式-JSON
