我有一个列表,比如:
a = [
['A', 'America', 'LA', '1123', '2014-05-01', [('A', '211'), ('AD', '398')]],
['D', 'America', 'LA', '1135', '2014-05-01', [('A', '211'), ('AD', '398')]],
['I', 'America', 'SF', '1145', '2014-05-01', [('A', '211'), ('AD', '398')]],
['A', 'England', 'LND', '3564', '2014-05-01', [('A', '211'), ('AD', '398')]],
['D', 'Dubai', 'DUB', '9990', '2014-05-01', [('A', '211'), ('AD', '398')]],
['D', 'Dubai', 'DUX', '9670', '2014-05-01', [('A', '211'), ('AD', '398')]],
['I', 'Dubai', 'DUB', '9800', '2014-05-01', [('A', '211'), ('AD', '398')]],
]
我想要一个嵌套的Dict,比如:
d = {
'America': {
'LA': {
'1123' : ['A', '2014-05-01', [('A', '211'), ('AD', '398')]],
'1135': ['D', '2014-05-01', [('A', '211'), ('AD', '398')]]
},
'SF': {
'1145': ['I', '2014-05-01', [('A', '211'), ('AD', '398')]]
}
},
'England': {
'LND': {
'3564': ['A', '2014-05-01', [('A', '211'), ('AD', '398')]]
}
},
'Dubai': {
'DUB': {
'9990': ['D', '2014-05-01', [('A', '211'), ('AD', '398')]],
'9800': ['I', '2014-05-01', [('A', '211'), ('AD', '398')]]
},
'DUX': {
'9670': ['D', '2014-05-01', [('A', '211'), ('AD', '398')]]
}
}
}
我已经试过了,但是仍然做不到,请检查我的代码并帮助我!你知道吗
pd = defaultdict(dict)
for row in a:
country = defaultdict(dict)
for c in a:
dest = defaultdict(list)
for d in a:
if c[2] == d[2]:
dest[d[3]].append([d[1], d[0],d[4],d[5],d[6], d[7]])
else:
continue
country[c[2]] = dest
pd[row[1]] = country
请尝试以下操作:
输出为:
输出
使用嵌套的
defaultdicts
,然后可以在a
上的for循环中使用一个简单的赋值语句。你知道吗输出:
使用
reduce()
和operator.itemgetter
的较少硬编码的解决方案:相关问题 更多 >
编程相关推荐