programing

사전에서 첫 번째 요소 가져오기

closeapi 2023. 7. 15. 10:08
반응형

사전에서 첫 번째 요소 가져오기

저는 다음과 같은 선언을 합니다.

Dictionary<string, Dictionary<string, string>> like = new Dictionary<string, Dictionary<string, string>>();

첫 번째 요소를 꺼내야 하는데 키나 값을 모릅니다.이것을 하는 가장 좋은 방법은 무엇입니까?

참고로 전화하기First여기서 실제로 IEnumberable의 Linq 확장을 호출하는데, 이는 다음에 의해 구현됩니다.Dictionary<TKey,TValue>하지만 사전에서 "first"는 정의된 의미를 가지고 있지 않습니다. 답변에 따르면 마지막으로 추가된 항목은 "첫 번째" 항목(즉, 스택처럼 동작함)으로 끝나지만, 이는 구현에 특정적이며 보장된 동작이 아닙니다.즉, First를 호출하여 정의된 항목을 얻을 것이라고 가정하는 은 문제를 제기하는 것입니다. 이 항목을 사용하는 것은 아래의 Bobson이 언급한 것처럼 사전에서 임의 항목을 얻는 것과 유사하게 취급되어야 합니다.그러나 때때로 사전의 항목이 필요하기 때문에 유용합니다.


그냥 린크를 사용하세요.First():

var first = like.First();
string key = first.Key;
Dictionary<string,string> val = first.Value;

참고: 사용First사전을 보면 알 수 있습니다.KeyValuePair이 경우에는KeyValuePair<string, Dictionary<string,string>>.


또한 다음을 사용하여 구체적인 의미를 얻을 수 있습니다.First그것을 린크와 결합함으로써.OrderBy:

var first = like.OrderBy(kvp => kvp.Key).First();

사전에서 요소를 얻는 링크 없는 방법을 원하는 사람을 위해.

var d = new Dictionary<string, string>();
d.Add("a", "b");
var e = d.GetEnumerator();
e.MoveNext();
var anElement = e.Current;
// anElement/e.Current is a KeyValuePair<string,string>
// where Key = "a", Value = "b"

이것이 구체적인 구현인지는 모르겠지만 사전에 요소가 없다면,Current다음을 포함합니다.KeyValuePair<string, string>키와 값이 모두 있는 곳.null.

(린크의 논리를 살펴봤습니다.First이것을 생각해내는 방법, 그리고 그것을 테스트했습니다.LinqPad 4)

사용할 수는 있지만,First()사전에는 순서 자체가 없습니다.대신 OrderedDictionary를 사용하십시오.그러면 당신은 할 수 있습니다.FirstOrDefault이런 식으로 하면 의미가 있을 것입니다.

편집: 정렬된 사전을 사용합니다.

사용하는 것이 좋습니다.FirstOrDefault()첫 번째 값을 검색합니다.

예:

var firstElement = like.FirstOrDefault();
string firstElementKey = firstElement.Key;
Dictinary<string,string> firstElementValue = firstElement.Value;

사전에서 항목의 순서를 정의하지 않습니다.아이템이 필요한 경우Keys또는Values사전 속성을 선택할 수 있습니다.

using System.Linq;

Dictionary<string, Dictionary<string, string>> like = new Dictionary<string, Dictionary<string, string>>();
Dictionary<string, string> first = like.Values.First();

나는 사전에서 첫 번째 요소를 찾는 쉬운 방법을 찾습니다 :)

 Dictionary<string, Dictionary<string, string>> like = 
 newDictionary<string,Dictionary<string, string>>();

 foreach(KeyValuePair<string, Dictionary<string, string>> _element in like)
 {
   Console.WriteLine(_element.Key); // or do something
   break;
 }

배열로 변환

var array = like.ToArray();
var first = array[0];

성능 측면에서 컬렉션을 인덱싱하는 쉬운 방법, 높은 호환성(2.0, 3.0, 3.5, 4.0, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7.1, 4.7.2, 4.8) 및 구현이 쉽습니다.

오늘 저장!!이것은 아이템 복사본일 뿐만 아니라 컬렉션의 아이템 참조입니다!!사세요!!

string [] arrayString = new string[like.Count];
like.Values.CopyTo( arrayString,0 );

arrayString[0] //First

참조:

https://learn.microsoft.com/es-es/dotnet/api/system.collections.generic.icollection-1.copyto?view=net-5.0

https://social.msdn.microsoft.com/Forums/vstudio/en-US/dc5e4242-64d3-45ac-bdea-cf4f3d9abdbb/icollectioncopyto-vs-arraylisttoarray?forum=netfxbcl

언급URL : https://stackoverflow.com/questions/13979966/get-first-element-from-a-dictionary

반응형