【问题标题】:How to parse two dict key at same time in python如何在python中同时解析两个dict键
【发布时间】:2015-09-22 20:43:58
【问题描述】:

我有一个巨大的系统日志文件,其中有一个在特定时间打印出系统数据的字典, 比方说:

{"key1":"val1", "Time":"mon dec 25 12:12:12 2012"}
{"key2":"val2", "key3": "val3", "Time":"mon dec 25 12:12:13 2012"}

所以基本上我是在key2和它对应的时间之间寻找一种and操作。

我尝试了以下

look = ["key2", "Time"]

for key, val in my_dict.items():
     if key in look:
         print my_dict[key]

但这也会打印出dict1中的时间戳,它对应于key1。

那么,我怎样才能找到key2和它对应的时间是val2呢?

【问题讨论】:

  • 我不太明白你对你想要得到什么结果的解释。你能举一个你想要的输出的例子吗?
  • 你有 1 个或多个 dicts ?
  • 很抱歉解释得很糟糕。我有多个字典。但看起来 Apero 的答案对我来说是正确的。

标签: python dictionary


【解决方案1】:

首先检查是否找到密钥,然后将密钥与“时间”一起打印

for key, val in my_dict.items():
     if key == "key2":
         print my_dict[key]
         print my_dict['Time']

【讨论】:

    【解决方案2】:

    让我们假设,因为我并不完全清楚,你记录的 lat 是一堆字典:

    log = [
        {"key1":"val1", "Time":"mon dec 25 12:12:12 2012"},
        {"key2":"val2", "key3": "val3", "Time":"mon dec 25 12:12:13 2012"}
    ]
    
    for d in log:
        if 'key2' in d:
            print d['Time']
    

    这是你需要的吗?

    【讨论】:

      【解决方案3】:

      如果我正确理解了您的问题,您正在阅读一系列字典(从哪里开始并不重要)并希望从中打印出某些值,但前提是这两个值的键都存在。在您的示例中,您希望打印第二个字典的 val2 和时间戳,但您当前的代码也会打印第一个字典的时间戳,即使它没有 key2 键。

      如果是这样,我认为您需要在打印任何内容之前使用all 测试所有请求的密钥是否存在。

      requred_keys = ['key2', 'Time']
      
      for my_dict in sequence_of_dicts:
          if all(key in my_dict for key in required_keys):
              for key in required_keys:
                  print my_dict[key]
      

      【讨论】:

        猜你喜欢
        • 2016-03-26
        • 1970-01-01
        • 1970-01-01
        • 2017-01-31
        • 1970-01-01
        • 2010-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多