【问题标题】:Python for loop, print same items oncePython for循环,一次打印相同的项目
【发布时间】:2015-09-21 12:32:36
【问题描述】:

我从 url 解析 json 数据,然后用 for 循环打印我想要的项目。

import urllib.request
import json
response = urllib.request.urlopen('http://jsonurl.com')
content = response.read()
jdata = json.loads(content.decode('utf8'))
jdata2 = jdata['available_channels']
for values in jdata2.values():
    live = values['live']
    category = values['category_name']
    if "1" in live:
      print(category)

问题是,如果多个项目具有相同的类别,那么它会多次打印它们。

例如

剧情 犯罪 剧情 剧情 剧情 喜剧 动作喜剧

我希望它只打印一次具有相同类别的项目:

剧情、犯罪、喜剧、动作

我该怎么做?

【问题讨论】:

  • 假设您必须手动完成任务;你对每个项目的思考过程是什么?你能把它翻译成代码吗?
  • 对不起,没有关注整个代码,看到你的例子Drama Crime .... 并认为就是这样。 set() 不适用于不可散列的对象

标签: python for-loop


【解决方案1】:

您可以使用集合来跟踪已打印的元素。示例 -

jdata2 = jdata['available_channels']
seen_set = set()
for values in jdata2.values():
    live = values['live']
    category = values['category_name']
    if "1" in live and category not in seen_set:
      print(category)
      seen_set.add(category)

【讨论】:

    【解决方案2】:

    您可以将感兴趣的类别存储到 set 中,这将删除重复项。然后打印出来:

    wanted_categories = {v['category_name'] for v in jdata2.values() if "1" in v['live']}
    print(wanted_categories)
    

    【讨论】:

      猜你喜欢
      • 2017-08-16
      • 1970-01-01
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 2018-02-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多