我正在尝试从“ libraryArray”中删除“ songDict”,但这会引发错误。
styles = [
{'selector':'tbody>tr:first-child>th:first-child', 'props':[('transform', 'rotate(90deg)'),]},
]
foo = pd.Categorical(['a', 'b'], categories=['a', 'b', 'c'])
bar = pd.Categorical(['d', 'e'], categories=['d', 'e', 'f'])
df = pd.crosstab(foo, bar)
# need to rebuild index as row_0 needs to be part of multiindex key
ri = pd.MultiIndex.from_tuples([tuple([df.index.name, v]) for v in df.index.values])
df.set_index(ri).style.set_table_styles(styles)
这是错误。 协议类型“ Any”的值不能与“ Equatable”相符;只有struct / enum / class类型可以符合协议
答案 0 :(得分:2)
正如错误所言,您不能像这样比较两个字典,因为它们不符合Equatable
协议。最好将结构用于数据模型,而不要使用Dictionary
。
struct Library: Equatable {
let id: String
...
}
但是,如果您不想这样做,您仍然可以通过将字典中的任何键的值均等来检查字典是否相等。
var arr = libraryArray.filter { (dict) -> Bool in
dict["id"] as? String == songDict["id"] as? String
}