假設我們有詞典ld1和ld2的列表。兩者都有一些共同的字典對象。假設字典對象「a」在兩個列表中。我想合併詞典列表,使得兩個列表中的同一個對象在合併列表中只應出現一次。合併詞典列表
Q
合併詞典列表
0
A
回答
2
LINQ's .Union
應該很好地工作:
如果你需要一個List
,只需撥打ToList()
的結果。
1
如果要合併列表,Enumerable.Union
ld1.Union(ld2)
-1
Dictionary<int, string> dic1 = new Dictionary<int, string>();
dic1.Add(1, "One");
dic1.Add(2, "Two");
dic1.Add(3, "Three");
dic1.Add(4, "Four");
dic1.Add(5, "Five");
Dictionary<int, string> dic2 = new Dictionary<int, string>();
dic2.Add(5, "Five");
dic2.Add(6, "Six");
dic2.Add(7, "Seven");
dic2.Add(8, "Eight");
Dictionary<int, string> dic3 = new Dictionary<int, string>();
dic3 = dic1.Union(dic2).ToDictionary(s => s.Key, s => s.Value);
結果dic3具有重複鍵值八個值(5, 「五」)中刪除。
0
如果您正在使用自定義對象或類,則簡單的enumerable.Union將不起作用。
您必須創建自定義比較器。
爲此創建一個新的類,它實現的IEqualityComparer然後使用此如下
oneList.Union(twoList,customComparer)
一些代碼示例如下所示:
public class Product
{
public string Name { get; set; }
public int Code { get; set; }
}
// Custom comparer for the Product class
class ProductComparer : IEqualityComparer<Product>
{
// Products are equal if their names and product numbers are equal.
public bool Equals(Product x, Product y)
{
//Check whether the compared objects reference the same data.
if (Object.ReferenceEquals(x, y)) return true;
//Check whether any of the compared objects is null.
if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
return false;
//Check whether the products' properties are equal.
return x.Code == y.Code && x.Name == y.Name;
}
// If Equals() returns true for a pair of objects
// then GetHashCode() must return the same value for these objects.
public int GetHashCode(Product product)
{
//Check whether the object is null
if (Object.ReferenceEquals(product, null)) return 0;
//Get hash code for the Name field if it is not null.
int hashProductName = product.Name == null ? 0 : product.Name.GetHashCode();
//Get hash code for the Code field.
int hashProductCode = product.Code.GetHashCode();
//Calculate the hash code for the product.
return hashProductName^hashProductCode;
}
}
詳細說明如下所示:
相關問題
- 1. 陣列型詞典合併
- 2. 如何迭代詞典列表併合並詞典以形成新的較短的詞典列表?
- 3. 合併字典的詞典
- 4. 將詞典列表與另一個詞典結合起來
- 5. 在python中合併詞典
- 6. 合併嵌套詞典
- 7. 合併兩個詞典
- 8. 合併詞典數組
- 9. Python字典列表合併
- 10. 集合的交集和詞典列表
- 11. 如何結合兩個詞典列表
- 12. 結合兩個詞典列表
- 13. 列表到詞典列表
- 14. 詞典和LINQ:過濾詞典列表
- 15. 蟒蛇找到重複的詞典中的列表和合並
- 16. 將列表中的類似詞典合併到一起
- 17. 更Python的方式來合併詞典列表爲一體?
- 18. 基於一個鍵/值對合並python詞典列表?
- 19. 通過嵌套鍵合併詞典列表
- 20. 在Python中將兩個詞典合併爲列表作爲值
- 21. 在C#中包含列表的合併詞典#
- 22. 從詞典列表
- 23. 將詞典列表分成幾個詞典列表
- 24. 從列表和詞典列表中提取所有詞典?
- 25. 形成列表詞典解釋詞典列表內容
- 26. 遍歷詞典列表,創建詞典的新列表
- 27. 從一個新的詞典列表更新排序列表(優先合併)
- 28. 如何結合詞典+列表,形成一個有序列表
- 29. 變換的詞典列表,以列表的詞典內置字典命令
- 30. 合併兩個庫與元素的列表,並堅持先詞典
相同的字典不會與Union一起重複,也不會重複存儲在您的字典中。 – veblock
@ChibuezeOpata 5/9接受是[不是很差](http://meta.stackexchange.com/questions/88046/is-58-accept-rate-bad)。 – Blorgbeard