出于某种原因,我的小脑袋出现问题,我有一个元组列表list = [('name:john','age:25','location:brazil'),('name:terry','age:32','location:acme')]
。我试图将这些值移动到字典中以便稍后解析。我已经做了一些尝试,低于最新的这些并且我没有将所有结果都输入到dict中,dict结束了迭代的最后一个值(每次重新创建dict)。
people = {}
list = [('name:john','age:25','location:brazil'),('name:terry','age:32','location:acme')]
for value in list:
people = {'person': [dict(item.split(":",1) for item in value)]}
答案 0 :(得分:1)
你也可以尝试这个:
inlist = [('name:john','age:25','location:brazil'),('name:terry','age:32','location:acme')]
d = []
for tup in inlist:
tempDict = {}
for elem in tup:
elem = elem.split(":")
tempDict.update({elem[0]:elem[1]})
d.append({'person':tempDict})
print(d)
输出:
[{'person': {'location': 'brazil', 'name': 'john', 'age': '25'}}, {'person': {'location': 'acme', 'name': 'terry', 'age': '32'}}]
如果您想要一个包含密钥person
的字典并使用该人的信息对字典进行评分,请将d.append({'person':tempDict})
替换为d.append(tempDict)
并在打印前添加d = {'person':d}
。< / p>
输出:
{'person': [{'location': 'brazil', 'name': 'john', 'age': '25'}, {'location': 'acme', 'name': 'terry', 'age': '32'}]}
答案 1 :(得分:0)
你可以试试这个:
l = [('name:john','age:25','location:brazil'),('person:terry','age:32','location:acme')]
people = [{c:d for c, d in [i.split(':') for i in a]} for a in l]
输出:
[{'name': 'john', 'age': '25', 'location': 'brazil'}, {'person': 'terry', 'age': '32', 'location': 'acme'}]
答案 2 :(得分:0)
首先尝试不要调用列表列表。这个名称在python中受到保护,通常用于从迭代器或范围等中获取列表。 我会首先列出一个人名单,然后将每个人作为单独的字典附加到人员列表中,如下所示:
people = []
my_list = [('name:john','age:25','location:brazil'),('person:terry','age:32','location:acme')]
for tup in my_list:
person = {}
for item in tup:
splitted = item.split(':')
person.update({splitted[0]:splitted[1]})
people.append(person)
输出就是这样:
[{'age': '25', 'location': 'brazil', 'name': 'john'},
{'age': '32', 'location': 'acme', 'person': 'terry'}]