Python - 修改列表中的列表

时间:2016-01-05 14:18:16

标签: python list loops

认为自己是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']}}
       ]

转换为字典我稍后会担心。但是我很难在循环中处理每个子列表。

任何想法都将受到高度赞赏。

谢谢!

5 个答案:

答案 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']}]

你喜欢这样,谢谢你。