Python 在单条听写理解中插入列表和切片

Python 在单条听写理解中插入列表和切片,python,list,python-3.x,slice,dictionary-comprehension,Python,List,Python 3.x,Slice,Dictionary Comprehension,我正在尝试建立一个插入和切片的听写理解。 有人知道如何做到这一点吗,甚至这是可能的吗? 我试图通过dict理解在cprd中获得与在newd中使用for循环相同的输出 代码(Python 3.6.1) 输出 h = ['H1', 'H2', 'H3', 'H4'] d = {'A': [['Y1', 'Y2', 'Y3', 'Y4'], [-3.4, 15.9, 'NA', 6.0], [-3.4, 4.2, -7.4, 6.3], [22.7, 7.4, 2.8, 'NA']], 'B': [[

我正在尝试建立一个插入和切片的听写理解。
有人知道如何做到这一点吗,甚至这是可能的吗?
我试图通过dict理解在
cprd
中获得与在
newd
中使用for循环相同的输出

代码(Python 3.6.1)

输出

h = ['H1', 'H2', 'H3', 'H4']
d = {'A': [['Y1', 'Y2', 'Y3', 'Y4'], [-3.4, 15.9, 'NA', 6.0], [-3.4, 4.2, -7.4, 6.3], [22.7, 7.4, 2.8, 'NA']], 'B': [['Y1', 'Y2', 'Y3', 'Y4'], [-45.8, -10.7, 'NA', 'NA'], [5.4, 12.7, 19.2, 20.3], [22.7, 7.4, 2.8, 'NA']], 'C': [['Y1', 'Y2', 'Y3', 'Y4'], [-10.5, 32.8, 'NA', 'NA'], [5.4, 12.7, 19.2, 20.3], [22.7, 7.4, 2.8, 'NA']]}
--------------------------------------------------------------------------------
newd = {'A': [['H1', 'H2', 'H3', 'H4'], [-3.4, 15.9, 'NA', 6.0], [-3.4, 4.2, -7.4, 6.3], [22.7, 7.4, 2.8, 'NA']], 'B': [['H1', 'H2', 'H3', 'H4'], [-45.8, -10.7, 'NA', 'NA'], [5.4, 12.7, 19.2, 20.3], [22.7, 7.4, 2.8, 'NA']], 'C': [['H1', 'H2', 'H3', 'H4'], [-10.5, 32.8, 'NA', 'NA'], [5.4, 12.7, 19.2, 20.3], [22.7, 7.4, 2.8, 'NA']]}
--------------------------------------------------------------------------------
cprd = {'A': [[-3.4, 15.9, 'NA', 6.0], [-3.4, 4.2, -7.4, 6.3], [22.7, 7.4, 2.8, 'NA']], 'B': [[-45.8, -10.7, 'NA', 'NA'], [5.4, 12.7, 19.2, 20.3], [22.7, 7.4, 2.8, 'NA']], 'C': [[-10.5, 32.8, 'NA', 'NA'], [5.4, 12.7, 19.2, 20.3], [22.7, 7.4, 2.8, 'NA']]}
--------------------------------------------------------------------------------
您可以使用创建所需的值:

{key:[h]+value[1:] for key,value in d.items()}
# {'A': [['H1', 'H2', 'H3', 'H4'], [-3.4, 15.9, 'NA', 6.0], [-3.4, 4.2, -7.4, 6.3], [22.7, 7.4, 2.8, 'NA']], 'B': [['H1', 'H2', 'H3', 'H4'], [-45.8, -10.7, 'NA', 'NA'], [5.4, 12.7, 19.2, 20.3], [22.7, 7.4, 2.8, 'NA']], 'C': [['H1', 'H2', 'H3', 'H4'], [-10.5, 32.8, 'NA', 'NA'], [5.4, 12.7, 19.2, 20.3], [22.7, 7.4, 2.8, 'NA']]}
请注意:

  • 它返回的数据与
    newd
  • 它不会变异
    d

在您的示例中,
d
在定义了
newd
后被更改。这是一个bug还是一个特性?:)

这取决于源词典是否应该进行变异,这。。。我不知道?我希望不是?如果变异是故意的,那么d中的v的
。values():v[0]=h
是代替插入/切片的方法……源代码不应该被变异,所以这是一个完美的解决方案:)不确定你的“这是一个bug还是一个特性?”问题是什么意思。@BjornMistiaen:这是一句俗语。有时,用户或其他开发人员可能会对意外行为(=bug)感兴趣,但原始开发人员可能有一个很好的理由来解释这种行为(=特性)。
{key:[h]+value[1:] for key,value in d.items()}
# {'A': [['H1', 'H2', 'H3', 'H4'], [-3.4, 15.9, 'NA', 6.0], [-3.4, 4.2, -7.4, 6.3], [22.7, 7.4, 2.8, 'NA']], 'B': [['H1', 'H2', 'H3', 'H4'], [-45.8, -10.7, 'NA', 'NA'], [5.4, 12.7, 19.2, 20.3], [22.7, 7.4, 2.8, 'NA']], 'C': [['H1', 'H2', 'H3', 'H4'], [-10.5, 32.8, 'NA', 'NA'], [5.4, 12.7, 19.2, 20.3], [22.7, 7.4, 2.8, 'NA']]}