下面有两个字典,我想合并它们,我的重点是选择那些我感兴趣的键,例如我感兴趣的所有键除了县。我使用的解决方案是在创建新词典之后使用del
函数,但是我确信有更多的方法可以更有效地解决这个问题。如何在没有del函数的情况下使用解包参数来解决这个问题。你知道吗
>>> d1 = {'avgUserperDay': '12', 'avgPurchaseperDay': '1', 'country': 'Japan'}
>>> d2 = {'tUser': 1, 'tPurchase': 0, 'country': 'Japan'}
>>> d ={**d1,**d2}
>>>{'tUser': 1, 'tPurchase': 0, 'avgPurchaseperDay': '1', 'avgUserperDay': '12', 'country': 'Japan'}
>>> del d['country']
>>> d
{'tUser': 1, 'tPurchase': 0, 'avgPurchaseperDay': '1', 'avgUserperDay': '12'}
经过讨论
此命令适用于3.5.1
>>> {**{k:v for k, v in chain(d1.items(), d2.items()) if k != 'country'}}
{'tUser': 1, 'tPurchase': 0, 'avgPurchaseperDay': '1', 'avgUserperDay': '12'}
为什么要用参数解包呢? 只要做:
其中keys-to-ignore是要忽略的键的列表/集/元组
如果不想使用
del
,可以用.pop(key)
替换它。 例如,也使用unpacking参数:注意
.pop
也返回值(这里是“Japan”)。你知道吗是的,你可以。但你不应该。理想的方法应该是:
无法直接满足您的条件:
dict
del
删除国家。你知道吗但如果这是你想要的,还有很多工作要做。例如,将
itertools.chain()
与dict comprehension一起用作:注意:对于那些关于
{**dict1, **dict2}
如何工作的古玩。它是从python3.5+开始支持的新语法,在PEP 448中提出。检查:What's New in Python 3.5文档。你知道吗由于只有python3.5+支持
{**dict1, **dict2}
,因此对于早期版本的Python,您可以执行以下操作(如S.De Melo所述):或者不使用
**
作为:相关问题 更多 >
编程相关推荐