【问题标题】:possible to return list of dict instead of a list when using for in? django使用 for in 时可以返回 dict 列表而不是列表吗? django
【发布时间】:2017-11-03 01:03:52
【问题描述】:

我有一个返回列表的代码,看起来像这样

[user.name for user in Model.field.filter()]

我知道这会返回一个用户名列表,但我想知道是否可以返回 listdict

比如

[
    {'name': 'name1', 'email': 'email1'},
    {'name': 'name2', 'email': 'email2'}
]

【问题讨论】:

  • 你不会做类似[{'name':user.name, 'email': user.email} for user in Model.field.filter()]的事情吗?
  • [user.name for user in Model.field.filter()] 的输出是什么
  • @PaulRooney 你是对的,这确实有效,我看了看,这是完美的......你想把它作为答案发布,以便我接受吗?非常感谢

标签: python arrays django list dictionary


【解决方案1】:

一种简单的方法是为列表理解中的每个条目构建一个dict

例如

[{'name':user.name, 'email': user.email} for user in Model.field.filter()]

【讨论】:

    【解决方案2】:

    字典将具有唯一键,其中您列出了“姓名”和“电子邮件”,如果您重复许多姓名/电子邮件,则该字典将不起作用。更不用说你不能从列表中“返回”一个字典,但是你可以create one。现在,如果您有姓名和电子邮件字段的密钥,那么字典将像这样namedict = {"key1":"name1","key2":"name2"} 创建。我会将它分成两个字典,一个用于名称,一个用于电子邮件。只有这样你才能通过namedict["key1"]从字典中返回一个名字

    如果您的“名称”变量不是那么可变;)(因为您希望它是您每个独特的“名称1”的“名称”,那么我认为使用熊猫数据框会更理想。这样你只需要添加一次“名称”,作为名称列表的标题,并且可以将它与电子邮件放在同一个变量中,您可以在其中执行相同操作。您 make a dataframe 通过:

    d= {'name': ["name1", "name2"], 'email': ["email1", "email2"]}
    df = pd.DataFrame(data=d)
    

    我包含了 dict 部分来回答您的实际问题,但总的来说,据我所知,数据框更适合您的目的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-06
      • 1970-01-01
      相关资源
      最近更新 更多