认为自己是Python的初学者。我正在尝试做一些我之前没有做过的事情,而且我完全不知所措。
希望有人能给我一个线索,告诉我这条道路。
我在更大的列表中有许多列表。
我想遍历大型列表并修改每个子列表中的数据。每个列表中都有许多常见变量,但并非所有列表都相同。
LIST = [
['Name: Dave', 'Age 28', 'Dogs', 'Football',],
['Name: Tony', 'Age 22', 'Beer', 'Star Wars', 'Hotdogs']
]
最终目标是拥有1个大型列表,每个子列表都转换为字典。
LIST = [
{'Dave' : { 'Age' : '28' } {'Likes' : ['Dogs', 'Football']}},
{'Tony' : { 'Age' : '22' } {'Likes' : ['Beer', 'Star Wars', 'Hotdogs']}}
]
转换为字典我稍后会担心。但是我很难在循环中处理每个子列表。
任何想法都将受到高度赞赏。
谢谢!
答案 0 :(得分:0)
list2 = []
for el in list1:
list2.append( compute(el))
其中compute是一种将列表转换为所需字典的方法
答案 1 :(得分:0)
Axnyff的回答几乎就是你想要的
ShadowRanger对Axnyff的答案的评论绝对是你想要的。列表理解真的很酷!
只需使用for循环遍历列表,就可以处理每个子列表并执行任何操作。
看起来你真的不想修改列表,而是想要将每个列表处理成一个字典(并将该过程提取到一个单独的函数中,这对于提高可读性非常有用),并将这些新字典放入进入新的名单。
编辑:
另外,正如在一个低调的答案中正确提到的,你的词典应该采用以下形式:
{'Name': 'Dave', 'Age': 28, 'Likes': ['Dogs', 'Football']}
除非您真的想使用字典按名称查找信息,否则这是正确的语法:
{'Dave' : { 'Age' : 28, 'Likes' : ['Dogs', 'Football']}}
答案 2 :(得分:0)
result = {}
temp = {}
for x in LIST:
key = x[0][6:]
key_1 = x[1][:3]
value_1 = x[1][3:]
key_2 = 'Likes'
value_2 = x[2:]
temp[key_1] = value_1
temp[key_2] = value_2
result[key] = temp
temp = {}
试试这个 但是你知道字典没有序列,也不能保证年龄在字典中排在第二位
答案 3 :(得分:0)
这是一个以汤姆·埃利斯提到的两种方式获取字典的答案。
LIST = [
['Name: Dave', 'Age 28', 'Dogs', 'Football', ],
['Name: Tony', 'Age 22', 'Beer', 'Star Wars', 'Hotdogs']
]
l = list()
for li in LIST:
d = dict()
likes_list = []
for i in li:
if "name" in i.lower():
d.update(dict([i.replace(' ', '').split(":")])) #removing the whitespace for formatting.
elif "age" in i.lower():
d.update(dict([i.split()]))
else:
likes_list.append(i)
d["likes"] = likes_list
l.append(d)
print l
结果是:
>>> [{'Age': '28', 'Name': 'Dave', 'likes': ['Dogs', 'Football']}, {'Age': '22', 'Name': 'Tony', 'likes': ['Beer', 'Star Wars', 'Hotdogs']}]
如果你真的想要首先使用的格式的字典,你可以继续这样的程序:
l2 = []
for element in l:
nd = {}
name = element.pop("Name").strip()
nd[name] = element
# print nd
l2.append(nd)
print l2
这导致你说的方式:
>>> [{'Dave': {'Age': '28', 'likes': ['Dogs', 'Football']}}, {'Tony': {'Age': '22', 'likes': ['Beer', 'Star Wars', 'Hotdogs']}}]
答案 4 :(得分:-2)
LIST=[{'Name': 'Dave', 'Age': 28, 'likes':['Dogs', 'Football']},{'Name': 'Tony', 'Age': 22, 'likes':['Beer', 'Star Wars', 'Hotdogs']}]
你喜欢这样,谢谢你。