从lis创建键、值1、值2字典

2024-05-13 00:56:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从字节列表创建一个key:value1,value2字典,但遇到了问题。你知道吗

这是我的名单

[b'Expected in April 2018',
 b'Murder At Koh E Fiza',
 b'34',
 b'06 April 2018',
 b'Subedar Joginder Singh',
 b'0',
 b'06 April 2018',
 b'Blackmail',
 b'86',
 b'06 April 2018',
 b'Missing',
 b'0',
 b'13 April 2018',
 b'October',
 b'59',
 b'13 April 2018',
 b'Mercury',
 b'0',
 b'20 April 2018',
 b'Omerta',
 b'50']

我尝试了以下代码:

 b = dict(zip(list[1::3],(list[2::3]+list[0::3])))

但我没有得到第三个值作为键值对。你知道吗

我也试过了

b = dict(zip(list[1::3],list[2::3]+list[0::3]))

同样的问题,我得到以下两个语句的输出

{b'Murder At Koh E Fiza': b'34', b'Subedar Joginder Singh': b'0', 
b'Blackmail': b'86', b'Missing': b'0', b'October': b'59', b'Mercury': b'0', 
b'Omerta': b'50'}

我正在寻找以下输出

b'Murder At Koh E Fiza': b'34',b'Expected in April 2018',
b'Subedar Joginder Singh': b'0',b'06 April 2018',

请告诉我


Tags: inatlistexpectedmissingmercuryapriloctober
3条回答

我想你正在寻找一个列表或元组与字典中的每个键相关联。所以像这样的方法应该行得通:

dict( zip(list[1::3], zip( list[2::3], list[0::3] ) ))

结果是

{'Mercury': ('0', '13 April 2018'), 'Murder At Koh E Fiza': ('34', 'Expected in April 2018'), 'October': ('59', '13 April 2018'), 'Missing': ('0', '06 April 2018'), 'Blackmail': ('86', '06 April 2018'), 'Omerta': ('50', '20 April 2018'), 'Subedar Joginder Singh': ('0', '06 April 2018')}

可以将zipdict comprehension一起使用

a = [b'Expected in April 2018',
 b'Murder At Koh E Fiza',
 b'34',
 b'06 April 2018',
 b'Subedar Joginder Singh',
 b'0',
 b'06 April 2018',
 b'Blackmail',
 b'86',
 b'06 April 2018',
 b'Missing',
 b'0',
 b'13 April 2018',
 b'October',
 b'59',
 b'13 April 2018',
 b'Mercury',
 b'0',
 b'20 April 2018',
 b'Omerta',
 b'50']

final = {v: [m, k] for k, v, m in zip(a, a[1:], a[2:])}

print(final.get(b'Murder At Koh E Fiza')
print(final.get(b'Subedar Joginder Singh'))

输出:

[b'34', b'Expected in April 2018']
[b'0', b'06 April 2018']

您也可以在不拉拉链的情况下找到答案:

my_list = ['Expected in April 2018', 'Murder At Koh E Fiza', '34', '06 
April 2018', 'Subedar Joginder Singh', '0', '06 April 2018', 
'Blackmail', '86', '06 April 2018', 'Missing', '0', '13 April 2018', 
'October', '59', '13 April 2018', 'Mercury', '0', '20 April 2018', 
'Omerta', '50']
n = 3
composite_list = [my_list[x:x+n] for x in range(0, len(my_list),n)]
d = {n[1]: [n[0], n[2]] for n in composite_list}

相关问题 更多 >