首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从记录列表填充字典的Pythonic方法

从记录列表填充字典的Pythonic方法
EN

Stack Overflow用户
提问于 2020-12-03 19:19:23
回答 2查看 131关注 0票数 1

背景

我有一个名为db.py的模块,它基本上由调用db的包装器函数组成。我有一张名为nba的桌子,里面有像player_nameageplayer_id等栏目。

我有一个名为db_cache()的简单函数,其中调用db表并请求获取所有player ids。response的输出如下所示

代码语言:javascript
复制
[Record(player_id='31200952409069'), Record(player_id='31201050710077'), Record(player_id='31201050500545'), Record(player_id='31001811412442'), Record(player_id='31201050607711')]

然后,我简单地遍历列表并将每一项转储到字典中。

我想知道是否有更多的pythonic方法来填充字典

我的代码

代码语言:javascript
复制
  def db_cache():
        my_dict: Dict[str, None] = {}
        response = db.run_query(sql="SELECT player_id FROM nba")
        for item in response:
            my_dict[item.player_id] = None
        return my_dict
    
    
    my_dict = db_cache()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-03 19:30:58

这是内置到dict类型的:

代码语言:javascript
复制
>>> help(dict.fromkeys)
Help on built-in function fromkeys:

fromkeys(iterable, value=None, /) method of builtins.type instance
    Create a new dictionary with keys from iterable and values set to value.

我们想要的valueNone的缺省值,所以我们需要的是:

代码语言:javascript
复制
my_dict = dict.from_keys(db.run_query(sql="SELECT player_id FROM nba"))

请注意,value将被重用,而不是复制,如果您想要使用可变的value,这可能会导致问题。在这种情况下,你应该使用辞典理解,就像@AvihayTsayeg的答案中给出的那样。

票数 2
EN

Stack Overflow用户

发布于 2020-12-03 19:25:22

代码语言:javascript
复制
my_arr = [1,2,3,4]
my_dict = {"item":item for item in my_arr}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65132676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档