我有兩個字典資源和 available_resources:
resources = {'B': 1, 's': 2, 't': 3, 'e': 3, '!': 1, 'h': 1, 'i': 1, ' ': 3, 'o': 1, 'g': 1, 'E': 1, 'A': 1, 'x': 2, 'p': 1, 'l': 1, 'r': 1}
available_resources = {'A': 1, 'l': 1, 'g': 1, 'o': 1, 'E': 1, 'x': 1, 'p': 1, 'e': 3, 'r': 1, 't': 3, ' ': 3, 'i': 1, 's': 2, 'h': 1, 'B': 1, '!': 1}
我想檢查資源是否是 available_resources 的子集(如果字典中包含的每個元素都是 <= 資源字典中的相應值條目)
我試過了:
if all(available_resources.get(key, None) == val for key, val
in resources.items()):
return True
它回傳false,還有其他方法可以讓它作業嗎?
uj5u.com熱心網友回復:
這可能是一個簡單的符號錯誤嗎?從 "==" val 到 "<=" val?我從下面得到了真實。
if all(available_resources.get(key, None) <= val for key, val
in resources.items()):
return True
uj5u.com熱心網友回復:
如果所有值都是整數,一種方法是使用collections.Counter:
from collections import Counter
resources = {'B': 1, 's': 2, 't': 3, 'e': 3, '!': 1, 'h': 1, 'i': 1, ' ': 3, 'o': 1, 'g': 1, 'E': 1, 'A': 1, 'x': 2, 'p': 1, 'l': 1, 'r': 1}
available_resources = {'A': 1, 'l': 1, 'g': 1, 'o': 1, 'E': 1, 'x': 1, 'p': 1, 'e': 3, 'r': 1, 't': 3, ' ': 3, 'i': 1, 's': 2, 'h': 1, 'B': 1, '!': 1}
res = bool(Counter(resources) - Counter(available_resources))
print(res)
輸出
True
uj5u.com熱心網友回復:
您可以使用<=集合中的運算子。此運算子確定一個集合是否是另一個集合的子集。
如下:
>>> resources.items() <= available_resources.items()
False
這將回傳,False因為x不同字典中的元素之間存在差異。您可以使用 set 運算子查看此差異^,并將回傳 之間的對稱差異dict:
>>> resources.items() ^ available_resources.items()
{('x', 1), ('x', 2)}
uj5u.com熱心網友回復:
你需要使用<=而不是==
>>> all(available_resources.get(k, -1)<=v for k,v in resources.items())
True
此外,如果resources包含一些在 中不存在的鍵,則上述方法可能會失敗available_resources,并且您可以另外檢查資源中的鍵是否是這種情況下 available_resources 中的鍵的子集
>>> all(available_resources.get(k, -1)<=v for k,v in resources.items()) and\
set(resources).issubset(available_resources)
True
uj5u.com熱心網友回復:
我已經測驗了這個 stackoverflow 問題中的答案:點擊這里
我認為它對你有用!
all(item in available_resources.items() for item in resources.items())
# - or - #
available_resources.items() <= resources.items()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/327565.html
上一篇:如何在node-postgres中優雅地處理“SASL:SCRAM-SERVER-FIRST-MESSAGE...”?
下一篇:具有唯一編號的陣列數量
