반응형
다른 사전에 추가
가능성 :
C #에서 사전 병합 C #
에서 한 사전의 값과 키를 다른 사전으로 복사하는 가장 빠른 방법은 무엇입니까?
몇 가지 값이있는 사전이 있습니다.
Animals <string, string>
이제 또 다른 사전을받습니다.
NewAnimals <string,string>
전체 NewAnimals 사전을 동물에 추가 비용을 지불해야합니까?
foreach(var newAnimal in NewAnimals)
Animals.Add(newAnimal.Key,newAnimal.Value)
참고 :이 경우 예외가 발생합니다.
NET 뿐만 아니라 AddRange
모든 ICollection<T>
에서 작동 하는 일반 확장 메소드 를 정의 할 수 Dictionary<TKey,TValue>
있습니다.
public static void AddRange<T>(this ICollection<T> target, IEnumerable<T> source)
{
if(target==null)
throw new ArgumentNullException(nameof(target));
if(source==null)
throw new ArgumentNullException(nameof(source));
foreach(var element in source)
target.Add(element);
}
(사전에 대한 중복 키 발생)
더 번 이상 사용하고 싶을 가능성이 가장 높은 확장 방법을 생성 하면 두 번 이상 사용하고 싶을 수 있습니다.
이행 :
public static void AddRange<T, S>(this Dictionary<T, S> source, Dictionary<T, S> collection)
{
if (collection == null)
{
throw new ArgumentNullException("Collection is null");
}
foreach (var item in collection)
{
if(!source.ContainsKey(item.Key)){
source.Add(item.Key, item.Value);
}
else
{
// handle duplicate key issue here
}
}
}
용법 :
Dictionary<string,string> animals = new Dictionary<string,string>();
Dictionary<string,string> newanimals = new Dictionary<string,string>();
animals.AddRange(newanimals);
가장 확실한 방법은 다음과 가능합니다.
foreach(var kvp in NewAnimals)
Animals.Add(kvp.Key, kvp.Value);
//use Animals[kvp.Key] = kvp.Value instead if duplicate keys are an issue
메서드를 Dictionary<TKey, TValue>
명시 적으로 구현 하므로 ICollection<KeyValuePair<TKey, TValue>>.Add
다음을 수행 할 수도 있습니다.
var animalsAsCollection = (ICollection<KeyValuePair<string, string>>) Animals;
foreach(var kvp in NewAnimals)
animalsAsCollection.Add(kvp);
클래스가하는 AddRange
것과 같은 방법 이 없다는 것은 유감 List<T>
입니다.
짧은 대답은 반복해야한다는 것입니다.
이 주제에 대한 추가 정보 :
C #에서 한 사전의 값과 키를 다른 사전으로 복사하는 가장 빠른 방법은 무엇입니까?
foreach를 사용하여 모든 동물을 반복하고 NewAnimals에 넣을 수 있습니다.
참고 URL : https://stackoverflow.com/questions/3982448/adding-a-dictionary-to-another
반응형
'ProgramingTip' 카테고리의 다른 글
(row, col, values)의 튜플 목록에서 Pandas DataFrame을 생성합니다. (0) | 2020.10.21 |
---|---|
sqlite는 선택에서 모든 종류의 IF (조건) 문을 지원합니까? (0) | 2020.10.21 |
'제로'의 Android 복수형 처리 (0) | 2020.10.21 |
Git을 사용하여 하나의 특정 브랜치에 * 오직 * 존재하는 모든 커밋을 표시하고 다른 브랜치 * 아무 ** 표시 (0) | 2020.10.21 |
매개 변수화 된 문이 모든 SQL 제출을 중지 할 수 있습니까? (0) | 2020.10.21 |