所以我有一个字典(字符串,int> ,我需要删除字典中具有重复值的所有条目,第一个条目除外 所以,如果你有;
dictionary<bob, 1>
dictionary<sam, 2>
dictionary<jack, 1>
dictionary<billy, 1>
然后需要移除jack和billy,同时保留bob和sam。
感谢您的帮助。
答案 0 :(得分:1)
严格来说,没有第一个或第二个值,但如果你只想保留一个值,那么无论谁结果都会是的,你可以使用反向字典来做到这一点:
Dictionary<int,string> reverse = new Dictionary<int,string>();
foreach(string key in dictionary.Keys){
if (reverse.ContainsKey( dictionary[key] ))
continue;
reverse.Add( dictionary[key], key );
}
现在,您的reverse
字典的值为其键(因此它是唯一的)以及附加到其中的一个名称(&#34的名称;第一个&#34;该值的出现)。但是,如果您第二次执行相同的操作,结果可能会有所不同,因为字典中根本没有订单。
答案 1 :(得分:1)
在字典key-value pairs come in no specific order中。如果您可以保留任意一个,可以使用LINQ:
config(['database.connections.'.$company->id => [
'driver' => 'mysql',
'host' => $company->host,
'username' => $company->username,
'password' => $company->password
]]);
//Using it
$clients = DB::connection($company->id)->select(...);
答案 2 :(得分:0)
无法从字典中判断出哪个值首先被插入,因为键值对不以任何特定顺序存储。如果要确保字典中的值是唯一的,则必须在添加值时跟踪这些值。最简单的方法是使用HashSet
。例如:
Dictionary<int, string> dictionary = new Dictionary<int, string>();
HashSet<string> values = new HashSet<string>();
...
public void AddToDictionary(int key, string value)
{
if (values.Contains(value))
return;
dictionary.Add(key, value);
values.Add(value);
}