2016-10-28 51 views
1

我有一個Python字典(實際上是字典的字典),其中的值是單個元素的列表。有沒有一種快速的方法將相應的列表更改爲標量值?將字典的值從列表更改爲標量值

mydata = {0: {u'AM019J4O': [u'XAIXMZ2H'], 
       u'BPJZMDRJ': [u'EKDZTAZJ'], 
       u'CMNH1UAS': [u'EP8S0STW']}, 
      1: {u'AM019J4O': [u'X47VO9R8'], 
       u'BPJZMDRJ': [u'EK5GPG4R'], 
       u'CMNH1UAS': [u'RNANJHMK']}} 

我要的是

mydata = {0: {u'AM019J4O': u'XAIXMZ2H', 
       u'BPJZMDRJ': u'EKDZTAZJ', 
       u'CMNH1UAS': u'EP8S0STW'}, 
      1: {u'AM019J4O': u'X47VO9R8', 
       u'BPJZMDRJ': u'EK5GPG4R', 
       u'CMNH1UAS': u'RNANJHMK'}} 
+0

'{k:v [0] for k,v in d.items()}'? – jonrsharpe

回答

0

試試這個,

for k,v in mydata.items(): 
    mydata[k] = {k1: v1[0] for k1, v1 in v.items()} 

這是一個嵌套dict通過它,進行迭代,從列表中單個元素。

工作

In [2]: for k,v in mydata.items(): 
    ...:   mydata[k] = {k1: v1[0] for k1, v1 in v.items()} 
    ...:  

In [3]: mydata 
Out[3]: 
{0: {u'AM019J4O': u'XAIXMZ2H', 
    u'BPJZMDRJ': u'EKDZTAZJ', 
    u'CMNH1UAS': u'EP8S0STW'}, 
1: {u'AM019J4O': u'X47VO9R8', 
    u'BPJZMDRJ': u'EK5GPG4R', 
    u'CMNH1UAS': u'RNANJHMK'}} 
0

你必須通過所有的嵌套字典迭代,並從列表中抽取單個元素:

mydata = {k: {nk: nv[0] for nk, nv in v.items()} for k, v in mydata.items()} 

演示:

>>> {k: {nk: nv[0] for nk, nv in v.items()} for k, v in mydata.items()} 
{0: {u'CMNH1UAS': u'EP8S0STW', u'AM019J4O': u'XAIXMZ2H', u'BPJZMDRJ': u'EKDZTAZJ'}, 1: {u'CMNH1UAS': u'RNANJHMK', u'AM019J4O': u'X47VO9R8', u'BPJZMDRJ': u'EK5GPG4R'}} 
>>> pprint(_) 
{0: {u'AM019J4O': u'XAIXMZ2H', 
    u'BPJZMDRJ': u'EKDZTAZJ', 
    u'CMNH1UAS': u'EP8S0STW'}, 
1: {u'AM019J4O': u'X47VO9R8', 
    u'BPJZMDRJ': u'EK5GPG4R', 
    u'CMNH1UAS': u'RNANJHMK'}} 
0
import pprint 
mydata = {0: {u'AM019J4O': [u'XAIXMZ2H'], 
     u'BPJZMDRJ': [u'EKDZTAZJ'], 
     u'CMNH1UAS': [u'EP8S0STW'],}, 
    1: {u'AM019J4O': [u'X47VO9R8'], 
     u'BPJZMDRJ': [u'EK5GPG4R'], 
     u'CMNH1UAS': [u'RNANJHMK'],}} 


pprint.pprint(mydata) 

def change(mydata): 
    res = dict() 
    for key, value in mydata.items(): 
     res[key] = {key: v[0] for key, v in value.items()} 
    return res 

pprint.pprint(change(mydata)) 

輸出:

{0: {u'AM019J4O': u'XAIXMZ2H', 
    u'BPJZMDRJ': u'EKDZTAZJ', 
    u'CMNH1UAS': u'EP8S0STW'}, 
1: {u'AM019J4O': u'X47VO9R8', 
    u'BPJZMDRJ': u'EK5GPG4R', 
    u'CMNH1UAS': u'RNANJHMK'}}