如何从元组列表创建字典而不覆盖键

2024-10-03 23:26:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本,从一个网站上提取文件,跨文件的关键是相同的

我想从这些文件创建一个字典,在不覆盖键的情况下提取文件

table_information = []
for t in my_url[:5]:
    page_detail = requests.get(t)
    tree_1 = html.fromstring(page_detail.content)
    title = ''.join(tree_1.xpath('//div/h1[@class="title"]/text()'))
    Track = title.split(' ')[0].strip()
    date = title.split('-')[1].strip()
    year = pd.to_datetime('now').year 
    race_date =  pd.to_datetime(date + ' ' + str(year)).strftime('%d/%m/%Y')    
    table_information.append((race_date,Track))
    

上面的代码提取文件并将其附加到列表中

提取的文件如下所示

table_information = 
[('Angle', '01/10/2021', ['342m', '342m', '530m', '342m', '342m', '595m', '530m', '342m', '342m', '342m']), 
('Ballarat', '02/10/2021', ['390m', '390m', '390m', '390m', '450m', '450m', '450m', '450m', '390m', '390m']), 
('Bendigo', '02/10/2021', ['425m', '425m', '425m', '425m', '500m', '500m', '500m', '425m', '425m', '425m', '425m', '425m'])]

现在我想要一本这种形式的词典

    new_dict = { 'Date':['01/10/2021', '02/10/2021', '02/10/2021'],
                'Track': ['Angle', 'Ballarat', 'Bendigo'],
                 'Distance': [['342m', '342m', '530m', '342m', '342m', '595m', '530m', '342m', '342m', '342m'],
                           ['390m', '390m', '390m', '390m', '450m', '450m', '450m', '450m', '390m', '390m'],
                           ['425m', '425m', '425m', '425m', '500m', '500m', '500m', '425m', '425m', '425m', '425m', '425m']]
                
}

我试图使用下面的代码创建字典,但我重复了多次。请问我怎样才能做到这一点

greyhound = {}
new_dict = {}
greyhoud['Date'] = [race_date]
greyhoud['Distatnce'] = [Distatnce]
greyhoud['Track'] = [Track]
for k,v in greyhoud.items():
    for key in k:
        if key in new_dict:
            new_dict[k].append(v)
        else:
            new_dict[k] = [v]

Tags: 文件innewfordate字典informationtitle
2条回答

只需在列表中循环并附加它们:

table_information = [
    ('Angle', '01/10/2021', ['342m', '342m', '530m', '342m', '342m', '595m', '530m', '342m', '342m', '342m']), 
    ('Ballarat', '02/10/2021', ['390m', '390m', '390m', '390m', '450m', '450m', '450m', '450m', '390m', '390m']), 
    ('Bendigo', '02/10/2021', ['425m', '425m', '425m', '425m', '500m', '500m', '500m', '425m', '425m', '425m', '425m', '425m'])
]

new_dict = {
    'Date': [],
    'Track': [],
    'Distance': []
}

for track, date, distance in table_information:
    new_dict['Track'].append(track)
    new_dict['Date'].append(date)
    new_dict['Distance'].append(distance)

只需通过table_information循环,将元组中的每个元素附加到适当的字典元素

greyhound = {'Date': [], 'Track': [], 'Distance': []}

for track, date, distance in table_information:
    greyhound['Track'].append(track)
    greyhound['Date'].append(date)
    greyhound['Distance'].append(distance)

相关问题 更多 >