从字典中提取键到另一个Python字典

文章介绍了如何在Python中使用.pop()函数从一个字典中提取特定键的值,并将其合并到另一个字典中,同时提供了两种方法:一是创建新字典,二是保留原字典结构。
摘要由CSDN通过智能技术生成

在这里插入图片描述

1、问题背景

有一个很大的Python字典,其中一个键的值是另一个字典。现在想创建一个新的字典,使用这些值,然后从原始字典中删除该键。但目前并不了解是否有函数可以将这些值导出到另一个字典中,仅知道可以使用.pop()函数进行删除。

2、解决方案

def popAndMergeDicts(line):

    tempDict = line['billing_address']
    del line['billing_address']
    for i in tempDict:
        line[i] = tempDict[i]
    print(line)


def process_file(filename):
    lines = tuple(open(filename))
    for line in lines[0:]:
        popAndMergeDicts(line)

process_file('allOrdersData')

可以使用.pop()方法来提取字典中的键并将其值导出到另一个字典中。pop()方法返回被提取的键的值。例如:

 big_dict = {
    'name': 'John Doe',
    'age': 30,
    'city': 'New York'
}

# 提取'age'键并将其值导出到'age_dict'
age_dict = big_dict.pop('age')

# 打印'big_dict'
print(big_dict)
# {'name': 'John Doe', 'city': 'New York'}

# 打印'age_dict'
print(age_dict)
# 30

提取billing_address键并将其值导出到另一个字典bill_dict中,然后从原始字典中删除billing_address键。

big_dict = {
    'shipping_cost_tax': '0.0000',
    'refunded_amount': '0.0000',
    # etc
    'billing_address': {
        'state': '*******',
        'street_1': '*************',
        'street_2': '',
        'country_iso2': 'AU',
        # etc
    },
    'subtotal_tax': '0.0000'
}

bill_dict = big_dict.pop('billing_address')

# 打印'big_dict'
print(big_dict)
# {'shipping_cost_tax': '0.0000', 'refunded_amount': '0.0000', 'subtotal_tax': '0.0000'}

# 打印'bill_dict'
print(bill_dict)
# {'state': '*******', 'street_1': '*************', 'street_2': '', 'country_iso2': 'AU', 'zip': '************', 'last_name': '************', 'company': '***************', 'first_name': '*********', 'email': '***************', 'phone': '*************', 'city': '*************'}

也可以使用dict.pop()方法来删除字典中的键,并返回被删除的键的值。例如:

big_dict = {
    'name': 'John Doe',
    'age': 30,
    'city': 'New York'
}

# 删除'age'键并将其值导出到'age_dict'
age_dict = big_dict.pop('age')

# 打印'big_dict'
print(big_dict)
# {'name': 'John Doe', 'city': 'New York'}

# 打印'age_dict'
print(age_dict)
# 30

如果想保留原始字典中的键/值,而不是创建一个新的字典,可以使用以下方法:

big_dict = {
    'shipping_cost_tax': '0.0000',
    'refunded_amount': '0.0000',
    # etc
    'billing_address': {
        'state': '*******',
        'street_1': '*************',
        'street_2': '',
        'country_iso2': 'AU',
        # etc
    },
    'subtotal_tax': '0.0000'
}

bill_dict = big_dict.pop('billing_address', {})
for k in bill_dict:
    big_dict[k] = bill_dict[k]

# 打印'big_dict'
print(big_dict)
# {'shipping_cost_tax': '0.0000', 'refunded_amount': '0.0000', 'state': '*******', 'street_1': '*************', 'street_2': '', 'country_iso2': 'AU', 'subtotal_tax': '0.0000'}

这样就可以将billing_address键的值保留在原始字典中,同时又可以创建一个新的字典bill_dict来存储这些值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值