在 python object 中加入两个内部列表

Joining two internal lists within a python object

对 python 很陌生,如果这个问题在其他地方被问过,我们深表歉意。

我正在尝试创建一个 object (HEADER),其中包含用户在 METRICS object 中输入的任何内容,不包括 3 个初始字符,即 'ga:' .

我的目标输出是:

METRICS = ['ga:sessions', 'ga:users']
HEADER = ['sessions', 'users']

到目前为止我所做的几乎实现了这一点,但是它将输出存储为单个 object 中的多个列表,这意味着(我相信)它写入并 re-writes每个列表并最终只输出最后一个列表,在这种情况下,它只是 ['users'].

METRICS = ['ga:sessions', 'ga:users']

for idx, val in enumerate(METRICS):
    HEADER = val[3:].split()
    print(HEADER)

print(HEADER)

你可以看到发生了什么,因为 for 循环内的 print 函数显示了两个 header,但是 for 循环外的 print 函数只显示了最后的 header.

我尝试采用的方法,以及问题的标题,是找到一种方法将 object 中的所有内部列表连接到一个列表中,这有望解决问题.

我也觉得我可能把事情复杂化了,而且有一种更简单的方法可以实现我想要实现的目标。

METRICS = ['ga:sessions', 'ga:users']
HEADERS = [item[3:] for item in METRICS]

试试这个

METRICS = ['ga:sessions', 'ga:users']
HEADER = []

for val in METRICS:
    HEADER.append(val[3:])

print(HEADER)

which then means (I believe) that it writes and re-writes over each list and ultimately outputs only the last list, which in this case, would simply be ['users'].

你在这里有一部分是对的。 "HEADER"不是一个列表而只是一个字符串对象(变量)并且因为循环,里面的值被重写了

很简单。 我将使用您的代码,并提出修改意见,并附上评论。

代码:

METRICS = ['ga:sessions', 'ga:users']

# Create an empty list named "HEADERS" which will store all of the "HEADER" variables
HEADERS = []

for idx, val in enumerate(METRICS):
    HEADER = val[3:].split()

    # Since you were able to get the value of "HEADER", all we have to do is append/store it inside of "HEADERS" list
    HEADERS.append(HEADER)
    print(HEADER)

print(HEADERS)

输出:

['sessions']
['users']
[['sessions'], ['users']]

Here you can simply approach the solution. Like, you can use split with ':' separator instead of item[:3], that can handle your desire output dynamically.

METRICS = ['ga:sessions', 'ga:users']
HEADER = list()
for item in METRICS:
   output = item.split(':')[1]
   HEADER.append(output)
   print(output)
print(HEADER)

Output look like,

sessions
users
['sessions', 'users']