Python词典:制作关键:重视键并附加新值

2024-09-29 01:35:49 发布

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

编辑:我的问题已经得到了很多后续问题,因为表面上看,这似乎没有任何意义。对大多数人来说,用字典来解决这个问题是不合逻辑的。我同意,并对我的限制感到沮丧(在评论中解释)。在我的场景中,原始的KV对将被编码为数据,由另一个使用ObjectID的服务器读取。但是,这必须作为字典输入到编码函数中。顺序无关紧要,但必须给KV对一个新的唯一值。在这个新字典中,原始的KV对将作为一个新的字符串键结束,ObjectID作为一个新的惟一值。你知道吗

请记住,我使用的是Python2.7。你知道吗

问题

请注意,这是一个由ObjectID值编码的字典(dictA)的问题,在我得到的约束范围内

我有一本字典,比如说dictA = {'a':'10', 'b':'20', 'c':'30'},我有一个ObjectIdentifier('n')的列表,其中n是一个数字。创建dictB使dictB成为一个新字典的最佳方法是什么?键等于dictA关键字:值对,且值等于列表中相应的ObjectIdentifier('n')。你知道吗

新的dictB应该是:

{"'a':'10'":ObjectIdentifier('n'), "'b':'20'":ObjectIdentifier('n+1'), "'c':'30'":ObjectIdentifier('n+2')}

如果这有意义的话。你知道吗


Tags: 数据服务器编辑编码列表字典场景评论
2条回答

我不知道你为什么想要这个

def ObjectIdentifier(n):
    print(n)
    return "ObjectIdentifier("+ str(n) + ")" 

dictA = {'a':'10', 'b':'20', 'c':'30'}

dictB = {}
for n, key in enumerate(sorted(dictA.keys())):
    dictB[key] = {dictA[key] : ObjectIdentifier(str(n))}

输出:

{'a': {'10': 'ObjectIdentifier(0)'}, 'b': {'20': 'ObjectIdentifier(1)'}, 'c': {'30': 'ObjectIdentifier(2)'}}

问题是字典没有排序。你这么说

dictA = {'a':'10', 'b':'20', 'c':'30'}

但据python所知

dictA = {'c':'30', 'a':'10', 'b':'20'}

因为字典没有秩序。你知道吗

您可以这样创建dict:

result = {key: ObjectIdentifier(n+pos) for pos, key in enumerate(dictA.items())}

但无法确定哪个键会落在哪个位置,因为正如我所说,字典没有顺序。你知道吗

如果你想按字母顺序排列,就用sorted()

result = {key: ObjectIdentifier(n+pos) 
    for pos, key in enumerate(sorted(dictA.items()))}

相关问题 更多 >