我有一个字典,列出了值:
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个单独的键打印值列表?
答案 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