根据原始词典中的N个键创建N个新词典

2024-06-16 14:39:27 发布

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

我对python和这里都是新手。我需要创建N个新的字典的基础上,从一个原始的字典N键。 假设我有一个OriginalDict {a:1, b:2, c:3, d:4, e:5, f:6}我需要创建6个新字典,其中的键(新键相同)是原始字典的值。类似于:

Dict1 {Name:a,...}, Dict2 {Name:b,...}, Dict3 {Name:c,...}.....
Dict6 {Name:f...}

这是我的密码:

d = {}     
for key in OriginalDict:
    d['Name'] = key

我买了一本新字典,但只买了最后一把钥匙。你知道吗

print d 

{Name:f} 

我猜如果键相同,cos在字典中的最后一个值会覆盖上一个值

请告知。。。:)


Tags: keynamein密码for字典基础钥匙
3条回答

举个例子,如果我们把所有这些格言都列在一个列表中,我们就可以使用这种理解

dicts = [{'Name': k} for k in OriginalDict]

让我们试试看

>>> OriginalDict = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
>>> dicts = [{'Name': k} for k in OriginalDict]
>>> dicts
[{'Name': 'd'}, {'Name': 'c'}, {'Name': 'a'}, {'Name': 'b'}, {'Name': 'e'}, {'Name': 'f'}]

至少在我看来,这句话似乎与你的例子相矛盾。你知道吗

在这种情况下我们可以

dicts = [{v: k} for k, v in OriginalDict.items()]

我们来试试:

>>> dicts = [{v: k} for k, v in OriginalDict.items()]
>>> dicts
[{4: 'd'}, {3: 'c'}, {1: 'a'}, {2: 'b'}, {5: 'e'}, {6: 'f'}]

我想在你的字典里创建一个新的函数,然后你想调用一个新的:

orig = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':6}

def make_sub_dictionaries(big_dictionary):
    for key, val in big_dictionary.iteritems():
        yield {'name': key, 'val': val }

# if you want them one by one, call next 

first = make_sub_dictionaries(orig).next()

print first

# if you want all of them 
for d in make_sub_dictionaries(orig):
    print str(d)
    # do whatever stuff you need to do

在python 3.x中:

for key in OriginalDict.keys():
     d = {}
     d ['Name'] = key

这将给你一个新的字典为每一个关键的原来的一个。现在,您可以将它们保存在一个列表或另一个字典中,如:

 New_Dicts = []
 for key in OriginalDict.keys():
     d = {}
     d ['Name'] = key
     New_Dicts.append(d)

或者

 New_Dicts = {}
 for i,key in enumerate(OriginalDict.keys()):
     d = {}
     d ['Name'] = key
     New_Dicts[i] = d

相关问题 更多 >