python - Python 字典:使 key:value 成为键并附加新值
问题描述
编辑:我的问题得到了很多后续问题,因为从表面上看,这似乎没有任何意义。对于大多数人来说,字典是解决这个问题的不合逻辑的方法。我同意,并且对我的限制感到沮丧(在评论中解释)。在我的场景中,原始的 KV 对将被编码为数据,以供另一台服务器使用 ObjectID 读取。然而,这必须作为字典输入到编码函数中。顺序无关紧要,但必须为 KV 对赋予一个新的唯一值。原始 KV 对最终将作为新字典中的新字符串键,并将 ObjectID 作为新的唯一值。
请记住,我使用的是 Python 2.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')}
如果那有意义的话。
解决方案
问题是字典没有排序。所以你说
dictA = {'a':'10', 'b':'20', 'c':'30'}
但据python所知,它可能是
dictA = {'c':'30', 'a':'10', 'b':'20'}
因为字典没有顺序。
你可以像这样创建你的字典:
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()))}
推荐阅读
- c# - C# - 在 PDF 中查找“图像数据不足”错误
- mqtt - mosquitto mqtt 有太多正在发布的错误
- javascript - 如何在 ajax 脚本中添加另一个帖子名称/变量
- javascript - 试图用 var 而不是数字来简化 javascript。我对这一切都错了吗?
- java - 当您有多个方法调用但请求主体不同时,DTO 模式是什么?
- android - 如何使用 Kotlin 调用返回模块类型的方法?
- javascript - HIghchart 以周间隔显示当前月份数据
- .net-core - EF Core 中的 SqlFunctions.DatePart 等效项
- android - 如何从 ThemedReactContext 获取支持片段管理器?
- c - 定义变量“C 编程”