开发者社区> 问答> 正文

字典中的字符串转换问题,然后添加到列表

因此,我想从文本文件中将每个字符串转换成字典,然后将每个字符串添加到列表中。但是追加模式有一些问题。

这是我的代码:

contenuto_dei_file = [
    'Jund Food\nPioneer',
    'Blue Moon\nModern'
    'Izzet\nPioneer'
]


def parse_decks_content(contenuto):
    d = {}
    decks = []
    for element in contenuto:
        element = element.splitlines()
        d["name"] = element[0]
        d["formato"] = element[1]
        print(d)
        decks.append(d)

    return decks


decks_come_dizionari = parse_decks_content(contenuto_dei_file)
print(decks_come_dizionari)

所需结果:

decks = [
    { 'name': 'Jund Food', 'formato': 'Pioneer', },
    { 'name': 'Blue Moon', 'formato': 'Modern', },
    {'name': 'Izzet', 'formato': 'Pioneer'}
]

我的代码输出以下内容:

decks = [
    {'name': 'Izzet', 'formato': 'Pioneer'},
    {'name': 'Izzet', 'formato': 'Pioneer'},
    {'name': 'Izzet', 'formato': 'Pioneer'}
]

为什么追加不只是将每个元素添加到下一个元素,而是在之前覆盖该元素?

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 22:54:03 537 0
1 条回答
写回答
取消 提交回答
  • 这不是覆盖,您只有相同的字典,您应该在每次迭代中创建一个新的字典。

    而是这样做:

    contenuto_dei_file = [
        'Jund Food\nPioneer',
        'Blue Moon\nModern'
        'Izzet\nPioneer'
    ]
    
    
    def parse_decks_content(contenuto):
        decks = []
        for element in contenuto:
            d = {}
            element = element.splitlines()
            d["name"] = element[0]
            d["formato"] = element[1]
            print(d)
            decks.append(d)
    
        return decks
    
    
    decks_come_dizionari = parse_decks_content(contenuto_dei_file)
    print(decks_come_dizionari)
    

    回答来源:stackoverflow

    2020-03-24 22:54:10
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载