7

我想打印带有项目索引的列表项,例如

0: [('idx', 10), ('degree', 0)]
1: [('idx', 20), ('degree', 0)]

根据下面的代码,如何将“0:”附加为整数 + 字符串 + 列表项?

import logging

class Node(object):
    __slots__= "idx", "degree"

    def __init__(self, idx, degree):
        self.idx = idx
        self.degree = 0


    def items(self):
        "dict style items"
        return [
            (field_name, getattr(self, field_name))
            for field_name in self.__slots__]

def funcA():

    a = []
    a.append(Node(10, 0))
    a.append(Node(20, 0))

    for i in range(0, len(a)):
        logging.debug(a[i].items())

if __name__ == '__main__':
    logging.basicConfig(level=logging.DEBUG)  
    funcA()

目前,结果是

DEBUG:root:[('idx', 10), ('degree', 0)]
DEBUG:root:[('idx', 20), ('degree', 0)]

期待

DEBUG:root:0:[('idx', 10), ('degree', 0)]
DEBUG:root:1:[('idx', 20), ('degree', 0)]
4

2 回答 2

7

使用 Python > 3.6,您可以使用fstring

logging.debug(f"{i}:{a[i].items()}")
于 2018-10-24T15:45:34.713 回答
5

我会这样做。

def funcA():
    a = []
    a.append(Node(10, 0))
    a.append(Node(20, 0))

    for i in range(0, len(a)):
        message = '%s:%s' % (i, a[i].items())
        logging.debug(message)

产生这个作为输出:

DEBUG:root:0:[('idx', 10), ('degree', 0)]
DEBUG:root:1:[('idx', 20), ('degree', 0)]

你也可以使用加入:

message = ':'.join([str(i), str(a[i].items())])

或格式:

message = '{0}:{1}'.format(str(i), a[i].items())

什么对你来说最清楚。

于 2013-07-17T02:43:05.363 回答