擅长:python、mysql、java
<p>不知道有没有优雅的方式。<code>OrderedDict</code>有一个<code>move_to_end</code>方法在开始或结束时移动关键点,但不是在随机位置。在</p>
<p>我会尽量提高效率,尽量减少循环次数</p>
<ul>
<li>把钥匙列出来</li>
<li>找到要与下面的键合并的键的索引</li>
<li>删除字典的下一个键</li>
<li>使用<code>d</code>项创建列表</li>
<li>使用存储索引处的新值更改此列表</li>
<li>从中重建<code>OrderedDict</code></li>
</ul>
<p>像这样(我删除了一些键,因为它缩短了示例):</p>
<pre><code>from collections import OrderedDict
d = OrderedDict([
("Sample Code", "Vendor Sample ID"),
("Donor ID", "Vendor Subject ID"),
("Format", "Material Format"),
("Sample Type", "Sample Type"),
("Age", "Age"),
("Gender", "Gender"),
])
lk = list(d.keys())
index = lk.index("Sample Type")
v = d.pop(lk[index+1])
t = list(d.items())
t[index] = ("new key",t[index][1]+" "+v)
d = OrderedDict(t)
print(d)
</code></pre>
<p>结果:</p>
<blockquote>
<p>OrderedDict([('Sample Code', 'Vendor Sample ID'), ('Donor ID', 'Vendor Subject ID'), ('Format', 'Material Format'), ('new key', 'Sample Type Age'), ('Gender', 'Gender')])</p>
</blockquote>