繁体   English   中英

Perl的哈希表“如果存在”的Python等效语言是什么?

[英]What is the Python equivalent of Perl's 'if exists' for hashes?

我正在写一个工作脚本,需要能够创建一个数组哈希,以检查哈希(或字典)中是否存在键,如果是,我将从新值中汇总一些值行到现有的哈希值中。 这是我在Perl中的代码,Python的翻译是什么?

if (exists($rollUpHash{$hashKey}))
        {
          say("Same key found, summing up!")
          $rollUpHash{$hashKey}[14] += $lineFields[14];
          $rollUpHash{$hashKey}[15] += $lineFields[15];
          $rollUpHash{$hashKey}[16] += $lineFields[16];
          $rollUpHash{$hashKey}[17] += $lineFields[17];
          $rollUpHash{$hashKey}[24] += $lineFields[24];
          push @{$rollUpHash{$hashKey}}, $sumDeduct_NonDeduct_ytd;
          # print %rollUpHash;
        }
      else
        {
          $rollUpHash{$hashKey} = \@lineFields;
        }

如果您只是检查密钥是否存在,则可以if "key" in your_dictionary执行if "key" in your_dictionary

编辑:

为了处理问题的意外部分,关于将新值添加到数组,您可以执行以下操作

# -1 will give you the last item in the list every time
for key, value in nums.iteritems():
    nums[key].append(value[-1]+value[-1])

您也可以使用它

rollUpHash.get(key, None)

如果键存在,则该函数返回此键的值,否则该函数将返回您分配为默认值的任何内容(第二个参数)

if rollUpHash.has_key(hashkey):
    print "Same key found, summing up!"
    rollUpHash[hashkey][14] += lineFields[14]
    ...
    ...
    rollUpHash[hashkey].append(sumDeduct_NonDeduct_ytd)
else:
    rollUpHash[hashkey] = lineFields

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM