a=[['kyle','movie_1','c_13'],
['blair','food','a_29'],
['reese','movie_2','abc_76']]
b=['df.movie_1',
'ghk.food',
'df.movie_2']
x = {}
for i in b:
y = i.split('.')
for j in a:
if y[1] in j : x[y[0]]=j
print(x)
这是我用来检查列表a
中是否有字符串的代码。
我得到的结果是
{'df': ['reese', 'movie_2', 'abc_76'], 'ghk': ['blair', 'food', 'a_29']}
我期望的输出是
{'df': [['kyle','movie_1','c_13'],['reese', 'movie_2', 'abc_76']], 'ghk': ['blair', 'food', 'a_29']}
原因是该值存在时将被覆盖
x['df']
您可以使用defaultdict保存它们(虽然与您预期的略有不同,但非常简单):
如前一个答案所述,问题在于循环最终会覆盖
x[y[0]]
的值。根据所需的输出,您需要将append
改为list
。使用defaultdict
已经有了一个很好的解决方案。如果您只想使用标准的list
,这是一种方法:希望这能奏效: 单行代码
代码:
输出:![Output lookslike](https://i.stack.imgur.com/cCy2G.png)
相关问题 更多 >
编程相关推荐