【问题标题】:Counting lines in python without using a textfile在不使用文本文件的情况下计算python中的行数
【发布时间】:2015-01-29 19:02:50
【问题描述】:

我终于过滤了我的脚本,只输出我想要的。 它有效......一半!

在这里一些了不起的人的帮助下,我设法创建了一个脚本,可以自动接受在 snapchat 上的好友请求,但我想在其中设置一个计数器来查看某人拥有多少已确认的好友。

不过,这还不是最大的问题,我已经解决了。 通过使用以下代码;

for friend in friends:
    if friend['type'] == 0:
        names = friend[u'name']
        print names

它可以很好地打印名称,例如我的结果是:

test.account2
test.account3
test.account4
etc...

到目前为止,这太棒了。

现在我想数一数到底有多少朋友,然后打印出这个数字。

所以在这种情况下,数字将是 3(显然,没有考虑“等”)

虽然,我尝试过 len、count、str.count 和许多其他方法,但它似乎不起作用。 首先,它打印了 3 次,我得到了,因为它是缩进的。 但是将缩进向后移动,使它“忘记”names

到目前为止,我唯一能做的就是按以下方式打印出所有 3 个名字的字母数:

13
13
13

我在这里忽略了什么,还是只是愚蠢?

感谢您的帮助!

【问题讨论】:

  • 你是什么意思“但它似乎不起作用”?内置函数 len() 必须返回有效的数组长度。朋友变量的类型是什么?
  • 你能粘贴你的完整代码吗?你知道命名空间吗?从if 中取出names 使其失去价值。所以print names 应该给出一个错误,因为names 没有定义。
  • 真的,变量names 应该改为name。这可能会帮助您思考自己在做什么。

标签: python json list counting


【解决方案1】:

您的 names 变量不是数组。它只是存储当前朋友项目的名称,因为 friends 被循环了。因此,您也 3 次得到 13 的长度,因为它只是遇到的特定名称字符串的字符数。

要获取名称数组,您可以这样做:

names = []
for friend in friends:
    if friend['type'] == 0:
        names.append(friend[u'name'])

或者更简单:

names = [friend[u'name'] for friend in friends if friend['type'] == 0]

然后len(names) 将提供名称计数。

【讨论】:

    【解决方案2】:

    您看到的是13,因为这是每个名称test.account2 等的长度。这是因为您在names 上调用了len,就像这样len(names),这不是您想要的。

    在你的 for 循环上方初始化一个列表:name_list = [] 并将名称附加到该列表中:

    name_list = []
    for friend in friends:
        if friend['type'] == 0:
            names = friend[u'name']
            print names
            name_list.append(names)
    
    print 'Added %d names' % (len(name_list))
    

    根据您的示例,最终的 print 现在应该转储 3

    【讨论】:

    • 感谢您的意见,绝对帮助了我:)
    猜你喜欢
    • 2020-02-02
    • 2012-11-18
    • 1970-01-01
    • 2020-04-21
    • 2016-10-23
    • 2020-07-31
    • 2011-07-18
    • 2011-09-11
    • 1970-01-01
    相关资源
    最近更新 更多