我如何更改这样的列表:
[[0, 'Ealing Broadway', 103.89],
[0, 'Notting Hill Gate', 103.89],
[0, 'Mile End', 103.89],
[1, 'Ealing Broadway', 59.089999999999996],
[2, 'Notting Hill Gate', 40.279999999999994],
[3, 'Mile End', 68.86999999999999]]一本字典里
{0:{'length':103.89,'interchange':['Ealing Broadway','Notting Hill Gate','Mile End']},
1:{'length':59.089999999999996,'interchange':['Ealing Broadway']},
2:{'length':40.279999999999994,'interchange':['Notting Hill Gate']},
3:{'length':68.86999999999999,'interchange':['Mile End']}}谢谢
I am trying to start with:
d2 = defaultdict(list)
for k, v in all_info:
d2[k].append(v)
with_length=dict((k,list(v)) for k,v in d2.iteritems())
with_length但是它不起作用,我在挣扎着从哪里开始。
发布于 2016-05-29 19:05:27
与Majora类似的答案,但首先使用groupby。没有虚假的查找,但可能需要事先排序。
from itertools import groupby
lst = [[0, 'Ealing Broadway', 103.89],
[0, 'Notting Hill Gate', 103.89],
[0, 'Mile End', 103.89],
[1, 'Ealing Broadway', 59.089999999999996],
[2, 'Notting Hill Gate', 40.279999999999994],
[3, 'Mile End', 68.86999999999999]]
new_list = []
for key, group in groupby(lst, lambda x: x[0]):
new_list.append(list(group))
main_dict = {}
for item in new_list:
main_dict[item[0][0]] = {'length': item[0][2], 'interchange': [stn[1] for stn in item]}发布于 2016-05-29 18:59:12
下面是一个具体的例子,说明您将如何做到这一点:
l = [[0, 'Ealing Broadway', 103.89],
[0, 'Notting Hill Gate', 103.89],
[0, 'Mile End', 103.89],
[1, 'Ealing Broadway', 59.089999999999996],
[2, 'Notting Hill Gate', 40.279999999999994],
[3, 'Mile End', 68.86999999999999]]
d = {}
for pair in l:
if pair[0] not in d.keys():
d[pair[0]] = { 'interchange': [] }
d[pair[0]]['length'] = pair[2]
d[pair[0]]['interchange'].append(pair[1])这是假设在向d['length']添加元素时要覆盖d[0]。
发布于 2016-05-29 19:05:39
b = {}
for i in a:
if b.has_key(i[0]):
b[i[0]]['interchange'].append(i[1])
else:
b[i[0]] = {'length': i[2], 'interchange': [i[1]]}https://stackoverflow.com/questions/37513515
复制相似问题