正确读取python列表

问题描述 投票:-1回答:2

我已经定义了一个函数,它接受这样的列表

arr = ['C','D','E','I','M']    

我有另一个产生类似列表的函数,函数是:

def tree_count(arr):
    feat = ['2','2','2','2','0']
    feat_2 = []
    dictionary = dict(zip(arr, feat))
    print('dic',dictionary)
    feat_2.append([k for k,v in dictionary.items() if v=='2'])

    newarr = str(feat_2)[1:-1]
    print(newarr)

这会输出我想要的正确结果,即:

['C','D','E','I']

但问题是,当我在另一个函数中使用此列表时,其值应该被读作C,D,E,I。但是当我打印它时,括号[和'包含在结果中:

for i in newarr:
   print(i)

打印结果为:[ ' C ',每行等等。我想摆脱[ '。我该如何解决这个问题?

python python-3.x dictionary
2个回答
1
投票

让你的函数返回字典而不是只打印它:

def tree_count(arr):
    feat = ['2','2','2','2','0']
    dictionary = dict(zip(arr, feat))
    dictionary = [k for k in dictionary if dictionary[k] == '2']
    return dictionary

例如,

$ results = tree_count(['C','D','E','I','M'])
$ print(results)
['I', 'C', 'D', 'E']

然后,漂亮的印刷非常简单:

$ print("\n".join(results))
I
C
D
E

...或者如果你只是想要,

$ print(", ".join(results))
I, C, D, E

2
投票

出于某种原因,你在数组上使用str(),这就是导致数组中的方括号出现在print语句中的原因。 看看以下方法是否适合您:

print(arr) # ['C','D','E','I'] - the array itself

print(str(arr)) # "['C', 'D', 'E', 'I']" - the array as string literal

print(''.join(arr)) # 'CDEI' - array contents as string with no spaces

print(' '.join(arr)) # 'C D E I' - array contents as string with spaces
© www.soinside.com 2019 - 2024. All rights reserved.