【问题标题】:how to get a dictionary out of a list如何从列表中取出字典
【发布时间】:2022-01-17 10:09:16
【问题描述】:

我正在尝试从列表中获取字典。首先,我有一个列表列表,并使用下面的代码从列表列表中获得一个列表:

y_table = [["Account Manager", "Name", "BP", "Contact", "Quote Name", "Type", "Status", "Total"],
            ["bubble", "kwlak", "5677", "conn", "987", "butter", "fish", "fill"],
            ["rose", "kwlak", "5677", "conn", "987", "butter", "fish", "fill"],
            ["purple", "kwlak", "5677", "conn", "987", "butter", "fish", "fill"],
            ["dark", "kwlak", "5677", "conn", "987", "butter", "fish", "fill"],
            ["star", "kwlak", "5677", "conn", "987", "butter", "fish", "fill"],
            ["asmr", "kwlak", "5677", "conn", "987", "butter", "fish", "fill"],]

flat_list = []
for sublist in my_table:
    for item in sublist:
        flat_list.append(item)
print(flat_list)

现在我的列表看起来像这样:

['Account Manager', 'Name', 'BP', 'Contact', 'Quote Name', 'Type', 'Status', 'Total', 'bubble', 'kwlak', '5677', 'conn', '987', 'butter', 'fish', 'fill', 'rose', 'kwlak', '5677', 'conn', '987', 'butter', 'fish', 'fill', 'purple', 'kwlak', '5677', 'conn', '987', 'butter', 'fish', 'fill', 'dark', 'kwlak', '5677', 'conn', '987', 'butter', 'fish', 'fill', 'star', 'kwlak', '5677', 'conn', '987', 'butter', 'fish', 'fill', 'asmr', 'kwlak', '5677', 'conn', '987', 'butter', 'fish', 'fill']

现在我想从这个列表中得到一个字典,我希望它最后看起来像这样:

Table: [{'Account Manager': 'bubble', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}, 
{'Account Manager': 'rose', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}, 
{'Account Manager': 'purple', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}, 
{'Account Manager': 'dark', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}, 
{'Account Manager': 'star', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}, 
{'Account Manager': 'asmr', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}] 

我试图运行这段代码来获取这本字典,但它不起作用:

header_my_table = flat_list[0]
my_table.remove(flat_list[0])

my_table_dict = dict(zip(header_my_table, flat_list))

print(my_table_dict)

【问题讨论】:

  • 您正在调用您想要字典的输出,但向我们展示了一个 dict 列表。这令人困惑。
  • 如果你使用 pandas,list(pd.DataFrame(y_table[1:], columns=y_table[0]).T.to_dict().values())
  • 对不起,我一直在搞这个,我很困惑。我需要它作为我之前写的字典列表。我想我可能会在我根据需要设置字典后最后对其进行格式化。关于如何得到我的结果的任何想法?

标签: python python-3.x list dictionary


【解决方案1】:

似乎从y_table 构建您想要的列表比将其展平要容易得多。由于您希望将第一个子列表用作键,将其他子列表用作值,因此您可以简单地遍历 y_table[1:] 并在压缩的 y_table[0] 对和每个子列表上使用 dict 构造函数:

out = [dict(zip(y_table[0], lst)) for lst in y_table[1:]]

输出:

[{'Account Manager': 'bubble', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 
  'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}, 
 {'Account Manager': 'rose', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 
  'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}, 
 {'Account Manager': 'purple', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 
  'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}, 
 {'Account Manager': 'dark', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 
  'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}, 
 {'Account Manager': 'star', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 
  'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}, 
 {'Account Manager': 'asmr', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 
  'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}]

【讨论】:

  • 由于某种原因,这在我的代码中不起作用......所以 y_table 是 my_table 但我不明白我的代码中 lst 是什么:(
  • @Andy lst 只是引用y_table[1:] 中的每个子列表
  • :( 还是不行...
  • 它woooorked :D thaaank youuu 这么多!我之前尝试过使用 zip 功能,但显然不正确。这对我帮助很大 :) 非常感谢 :)
猜你喜欢
  • 1970-01-01
  • 2020-11-18
  • 2021-07-20
  • 2020-03-26
  • 1970-01-01
  • 1970-01-01
  • 2022-12-07
  • 2020-05-23
  • 2021-10-07
相关资源
最近更新 更多