![]() |
1
89
|
![]() |
2
12
这真的取决于你所说的平等。
此方法将测试两个字典是否包含具有相同值的相同键(假设两个字典使用相同的键)
|
![]() |
3
3
您可以使用LINQ进行键/值比较:
|
![]() |
4
1
是关于数组的,但是
|
![]() |
5
1
根据我在SmartHelp中为except方法所读的内容,我认为公认的答案是正确的:“通过使用默认的相等比较器比较值来产生两个序列的设置差异。”但我发现这不是一个好答案。 考虑此代码:
结果如下:
如您所见,“olddict”和“newdict”的设置完全相同。建议的解决方案和调用SequenceEqual都不能正常工作。我想知道这是不是由于使用了延迟加载或字典的比较器设置方式以外的原因。(尽管如此,从结构和参考解释来看,应该这样做。) 这是我提出的解决方案。请注意,我使用的规则如下:如果两个字典都包含相同的键,并且每个键的值匹配,则两个字典是相等的。键和值的顺序必须相同。我的解决方案可能不是最有效的,因为它依赖于遍历整个键集。
如果出现以下情况,还可以查看结果如何变化: 键顺序不同。(返回false)
和 键顺序匹配,但值不匹配(返回false)
如果序列顺序不重要,可以将函数更改为以下值,但可能会影响性能。
使用以下for newdict检查字典是否等于nosort(字典等于nosort返回true):
|
![]() |
6
1
除了@nick jones answer,您还需要以同样的顺序不可知的方式实现gethashcode。我建议这样做:
|
![]() |
7
0
如果两个字典包含相同的键,但顺序不同,是否应认为它们相等?如果没有,那么应该通过同时运行枚举器来比较字典。这可能比通过一个字典枚举和在另一个字典中查找每个元素更快。如果您事先知道相同的字典的元素顺序相同,那么这样的双重枚举可能是解决问题的方法。 |
![]() |
8
0
在运筹学问题中,它确实指出,相等性测试不仅应包括匹配键,还应包括它们的值。” 在这种情况下,如果两个字典包含相同的键集(顺序不重要),则称它们相等,并且 对于每一把这样的钥匙,他们都同意它的价值 ." 我是缺了什么东西还是有标记的答案? https://stackoverflow.com/a/3804852/916121 只检查大小和键是否相等,而不检查它们的值? 我本来会把这个贴在答案旁边的,但没办法把它作为评论添加,对不起。 |
![]() |
9
0
对于嵌套字典和列表,我在这里结合了以下几点想法: https://gist.github.com/NullVoxPopuli/f95baaa48b4e9854dcfe (太多的代码无法在这里发布)~100行 |
![]() |
eymentakak · json字典类型错误:字符串索引必须是整数 3 年前 |
![]() |
Rohan Mittal · 按dict值对dict排序 3 年前 |
![]() |
mars · 将值作为元组对字典进行排序 3 年前 |
![]() |
Sher Meen · 我需要列出一个循环中临时变量中存储的多个值 3 年前 |
![]() |
Shubh · 如何将字典行附加到空数据帧中? 3 年前 |
![]() |
kms · 从pandas中的字典中读取数据并指定新的列值 3 年前 |
![]() |
Alex · 如何向嵌套字典json添加值? 3 年前 |