正确读取python列表

时间:2018-02-28 20:18:17

标签: python python-3.x dictionary

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

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 ',依此类推。我想摆脱[ '。我该如何解决这个问题?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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