使用元组Python从字典创建字典

使用元组Python从字典创建字典,python,dictionary,tuples,Python,Dictionary,Tuples,给定一个包含N个键和K个键的元组的字典,K您可以使用字典理解: {k:v for k,v in orig_dict.iteritems() if k in tuple_keys} tple = ('key2', 'keyM') {k: orig_dict[k] for k in tple} >>> {k:orig_dict[k] for k in set(keys).intersection(orig_dict)} {'key2': 'value2'} 注意: >&

给定一个包含N个键和K个键的元组的字典,K您可以使用字典理解:

{k:v for k,v in orig_dict.iteritems() if k in tuple_keys}
tple = ('key2', 'keyM')
{k: orig_dict[k] for k in tple}
>>> {k:orig_dict[k] for k in set(keys).intersection(orig_dict)}
{'key2': 'value2'}
注意:

>>> orig_dict = {'key1':'value1', 'key2':'value2', 'keyN':'valueN'}
>>> tuple_keys = ('key2', 'keyN')
>>> {k:v for k,v in orig_dict.iteritems() if k in tuple_keys}
{'keyN': 'valueN', 'key2': 'value2'}

您可以使用字典理解:

{k:v for k,v in orig_dict.iteritems() if k in tuple_keys}
tple = ('key2', 'keyM')
{k: orig_dict[k] for k in tple}
>>> {k:orig_dict[k] for k in set(keys).intersection(orig_dict)}
{'key2': 'value2'}
注意:

>>> orig_dict = {'key1':'value1', 'key2':'value2', 'keyN':'valueN'}
>>> tuple_keys = ('key2', 'keyN')
>>> {k:v for k,v in orig_dict.iteritems() if k in tuple_keys}
{'keyN': 'valueN', 'key2': 'value2'}

用一种理解力:

{k:v for k,v in orig_dict.iteritems() if k in tuple_keys}
tple = ('key2', 'keyM')
{k: orig_dict[k] for k in tple}
>>> {k:orig_dict[k] for k in set(keys).intersection(orig_dict)}
{'key2': 'value2'}
或者,如果您更喜欢功能性:

from operator import itemgetter

dict(zip(tple, itemgetter(*tple)(orig_dict)))
更具pythonic的是有争议的,绝对不是pythonic的是使用tuple作为变量名

如果某些密钥可能不存在,您可以通过以下方式获取密钥:

对于
python3
只需使用
.keys()
,它返回一个dict\u view对象,而不是python2中的列表

如果要为缺少的键提供默认值None,还可以将map与dict.get一起使用,以便将缺少的键的值设置为None

dict(zip(tuple, map(orig_dict.get, tuple)

用一种理解力:

{k:v for k,v in orig_dict.iteritems() if k in tuple_keys}
tple = ('key2', 'keyM')
{k: orig_dict[k] for k in tple}
>>> {k:orig_dict[k] for k in set(keys).intersection(orig_dict)}
{'key2': 'value2'}
或者,如果您更喜欢功能性:

from operator import itemgetter

dict(zip(tple, itemgetter(*tple)(orig_dict)))
更具pythonic的是有争议的,绝对不是pythonic的是使用tuple作为变量名

如果某些密钥可能不存在,您可以通过以下方式获取密钥:

对于
python3
只需使用
.keys()
,它返回一个dict\u view对象,而不是python2中的列表

如果要为缺少的键提供默认值None,还可以将map与dict.get一起使用,以便将缺少的键的值设置为None

dict(zip(tuple, map(orig_dict.get, tuple)

使用字典理解

orig_dict = {'key1':'value1', 'key2':'value2', 'keyN':'valueN'}
keys = ('key2', 'keyM')

>>> {k:orig_dict[k] for k in keys if k in orig_dict}
{'key2': 'value2'}
这将比迭代字典的键并检查键是否存在于元组中更有效,因为查找dict是O(1)操作,而在元组中搜索则是O(n)操作

或者,您可以使用集合获取常用键,并将其与dict理解相结合:

{k:v for k,v in orig_dict.iteritems() if k in tuple_keys}
tple = ('key2', 'keyM')
{k: orig_dict[k] for k in tple}
>>> {k:orig_dict[k] for k in set(keys).intersection(orig_dict)}
{'key2': 'value2'}

使用字典理解

orig_dict = {'key1':'value1', 'key2':'value2', 'keyN':'valueN'}
keys = ('key2', 'keyM')

>>> {k:orig_dict[k] for k in keys if k in orig_dict}
{'key2': 'value2'}
这将比迭代字典的键并检查键是否存在于元组中更有效,因为查找dict是O(1)操作,而在元组中搜索则是O(n)操作

或者,您可以使用集合获取常用键,并将其与dict理解相结合:

{k:v for k,v in orig_dict.iteritems() if k in tuple_keys}
tple = ('key2', 'keyM')
{k: orig_dict[k] for k in tple}
>>> {k:orig_dict[k] for k in set(keys).intersection(orig_dict)}
{'key2': 'value2'}

这次比你强,坎宁安先生@juanpa.arrivillaga,稍有不同的方法,我完全相信所有的钥匙都在那里:)+1无论如何:)对于
itemgetter
方法,+1这一次吃了你,坎宁安先生@juanpa.arrivillaga,略有不同的方法,我完全相信所有的关键都在那里:)+1无论如何:)对于
itemgetter
方法,+1是的。肯定是更好的解决方案+1啊,是的。肯定是更好的解决方案+1.