首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将条目添加到字典中,然后将该列表中的条目添加到另一个字典中?

如何将条目添加到字典中,然后将该列表中的条目添加到另一个字典中?
EN

Stack Overflow用户
提问于 2017-01-28 01:31:22
回答 1查看 3.2K关注 0票数 1

我正在尝试解析XML文件中的值,该文件将使用foreach循环将项添加到一个集合中,然后使用另一个具有加法值的foreach循环将该集合中的项添加到另一个集合中。这就是我到目前为止所做的:

代码语言:javascript
复制
[xml]$testResults = Get-Content -Path $testResultsPath
$resultsByName = @{}
$resultsByPhone = @{}
$loop = 0
foreach($testCase in $testResults.'test-results'.'test-suite')
{
    foreach($testCase in $testResults.'test-results'.'test-suite'[$loop].'results'.'test-suite'.'results'.'test-suite'.'results'.
    'test-suite'.'results'.'test-suite'.'results'.'test-suite'.'results'.'test-suite'.'results'.'test-case')
    {
    $NameWithPone = $testCase.name.ToUpper().Substring($testCase.name.LastIndexOf('.')+1);  
    $Name =$NameWithPone.Substring(0, $NameWithPone.IndexOf('_'));
    $PhoneVersion = $testCase.name.Substring($testCase.name.IndexOf('_')+1);
    $resultsByName.Add($PhoneVersion, $Name)
        Foreach($resultCase in $resultsByName)
        {
            $resultsByPhone.Add($resultsByName, $testCase.result)
        }
    }
$loop++
}

但这只会添加第一个结果,然后给出错误"Item has already been added. Key in dictionary: 'System.Collections.Hashtable' Key being added: 'System.Collections.Hashtable'"我认为这是因为我每次都添加相同的项,我如何纠正这个错误?

第一个集合将如下所示:

代码语言:javascript
复制
google_pixel_xl-7_1_1          TESTTHATAREGISTEREDUSERCANLOGINTOTHECUSTOMERAPPSUCCESSFULLY                 
htc_10-6_0_1                   TESTTHATAREGISTEREDUSERCANLOGINTOTHECUSTOMERAPPSUCCESSFULLY                 
oneplus_one-4_4_4              TESTTHATAREGISTEREDUSERCANLOGINTOTHECUSTOMERAPPSUCCESSFULLY  

但我想将这两个值一起添加到另一个集合中,如下所示:

google_pixel_xl-7_1_1 TESTTHATAREGISTEREDUSERCANLOGINTOTHECUSTOMERAPPSUCCESSFULLY Error

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-30 22:52:44

我通过这样做完成了这个任务:

代码语言:javascript
复制
[xml]$testResults = Get-Content -Path $testResultsPath
foreach($testCase in $testResults.'test-results'.'test-suite')
{
    function Get-TestCases($myResults)
    {
        $testCases = @()
        foreach($child in $myResults.ChildNodes)
        {
            if($child.'test-case' -eq $null)
            {
                foreach($testCase in Get-TestCases $child)
                {
                    $testCases += $testCase     
                }
            }
            else
            {
                $testCases += $child.'test-case'
            }
        }
        return $testCases
    }
    $tests = Get-TestCases $testResults.'test-results'.'test-suite'[$loop]
    foreach($test in $tests)
    {
         $PhoneVersion = $test.name.Substring($test.name.IndexOf('_')+1);

         $resultsByPhone.Add($PhoneVersion, @{})
         $NameWithPhone = $test.name.ToUpper().Substring($test.name.LastIndexOf('.')+1);    
         $Name =$NameWithPhone.Substring(0, $NameWithPhone.IndexOf('_'));

         $resultsByPhone[$phoneVersion].Add($Name, $test.result)           


    }
    $resultsByPhone[$phoneVersion] 
    $resultsByPhone
    $loop++
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41899751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档