【问题标题】:Python Dictionary Iteration IssuePython字典迭代问题
【发布时间】:2021-07-24 17:33:25
【问题描述】:
Favorite_Places = {"Jeff": ["Chicago","Berlin","Munchen"],
"Kai": ["New York", "Washington"],
"Sally": ["Texas", "Dublin"],
"Betty": "Bahrein"
}

for k,v in Favorite_Places.items():

    if len(str(v)) > 1:
        print(k + "'s " + "favourite places are")
    for i in v:
        if len(i) > 1:
            print(i)
        else:
            print(k + "'s " + "favourite places is " + v)
            break
Jeff's favourite places are
Chicago
Berlin
Munchen
Kai's favourite places are
New York
Washington
Sally's favourite places are
Texas
Dublin
Betty's favourite places are
Betty's favourite places is Bahrein

我得到这样的输出。如何删除“Betty 最喜欢的地方是”的部分?

【问题讨论】:

  • 基于什么逻辑?你还没有说为什么贝蒂应该被排除在外。如果只是她的名字,为什么不在打印之前进行测试?

标签: python python-3.x dictionary iteration


【解决方案1】:

使用isinstance 检查值是否为列表

例如:

for k,v in Favorite_Places.items():
    if isinstance(v, list):
        print(k + "'s " + "favourite places are")
        for i in v:
            print(i)
    else:
        print(k + "'s " + "favourite places is " + v)

【讨论】:

    【解决方案2】:

    使用 isinstance 检查 value 是否为 String

    for k,v in Favorite_Places.items():
        if isinstance(v, str):
          print(k + "'s " + "favourite places is " + v)   
        else:
          print(k + "'s " + "favourite places are")
          for i in v:
              print(i)
    

    【讨论】:

      【解决方案3】:

      首先,尝试使用小写的 Python 变量名称,例如 Favourite_Places 通常用于类。
      其次,您绝对可以按照 Rakesh 的建议进行操作,但我会尝试将所有值转换为列表,这样更容易理解发生了什么。 我的例子:

      favorite_places = {"Jeff": ["Chicago","Berlin","Munchen"], "Kai": ["New York", "Washington"], "Sally": ["Texas", "Dublin"], "Betty": ["Bahrein"] }
      
      for key, value in favorite_places.items():
      
          print(key + "'s " + "favourite places ", end='')
      
          if len(value) >= 2:
              print(f"are {', '.join(value)}.")
          else:
              print(f"is {value[0]}.")
      

      【讨论】:

        【解决方案4】:

        只需将其更改为:

        if len(v) > 1:
                print(k + "'s " + "favourite places are")
        

        【讨论】:

          猜你喜欢
          • 2020-07-14
          • 1970-01-01
          • 1970-01-01
          • 2013-12-03
          • 1970-01-01
          • 1970-01-01
          • 2012-10-15
          • 1970-01-01
          • 2014-05-29
          相关资源
          最近更新 更多