在同一行python上打印字典值列表

时间:2017-05-05 14:25:16

标签: python python-3.x dictionary

我有一个字典,列出了值:

my_dict = {'key1': ['foo1','foo2'],
           'key2': ['bar1', 'bar2'],
           'key3': ['foobar1', 'foobar2'}

我想在字典中搜索多个键并将它们的值存储在列表中:

keys = []
values = []
for k,v in my_dict.items():
    if k.startswith(('key1', 'key3')):
        keys.append(k)
        values.append(v)

但是当我这样做时,我会得到一个值的多维(双括号)列表。如果我要用values.append(v)替换print(v),我会在2个单独的行中获取值。我的问题是,如何从同一行的2个单独的键打印值列表?

2 个答案:

答案 0 :(得分:2)

您可以在一行中打印嵌套列表的众多方法之一是理解:

print(*[i for sub in values for i in sub])

如果您没有想要首先嵌套,请将append替换为extend中的values.append(v)

list.extend获取一个列表(在这种情况下为v)并将其所有元素添加到另一个列表中。 list.append只是将元素添加到新列表中,从而产生您看到的嵌套结构。

答案 1 :(得分:2)

您的问题似乎是因为您将多个列表分别附加到values列表。也就是说,你正在做:

values = []

values.append(['foo1','foo2'])  

# values = [ ['foo1','foo2'] ]

values.append(['foobar1', 'foobar2']) 

# values = [ ['foo1'...], ['foobar1'...] ]

为了使值成为仅包含字符串的单个列表,请使用values.extend(v).extend()方法连接列表,而append方法则将它们嵌套。

values.extend(v)

# or:

values += v