在Python中将字典值的列表打印在同一行

3

我有一个字典,其中值为列表:

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)

但是当我执行这个操作时,对于值,我得到了一个多维的(双括号)列表。如果我用“print(v)”替换“values.append(v)”,我会在两行上看到这些值。我的问题是,如何在同一行上打印来自两个不同键的值列表?
2个回答

2

你可以使用推导式将嵌套列表在一行中打印出来:

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

如果您原本不希望它嵌套在第一个位置,请将append替换为extend,代码如下:values.extend(v)list.extend接受一个列表(在此情况下是v),并将其所有元素添加到另一个列表中。而list.append只是将元素按原样添加到新列表中,从而导致您看到的嵌套结构。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接