Home  >  Q&A  >  body text

python列表根据指定元素生成字典

列表的值是这样
mylist = [['3','ssss','123123453453234'],['4','ssss','3453464567345456'],['5','ssss','5687345324123123234'],['7','bbbb','96893543453463123234'],['8','bbbb','sdfsdfsdfsf'],['9','cccc','dfgdfg3242']]

要生成这样的字典
{'ssss':[{'3':'123123453453234'},{'4':'3453464567345456'},{'5':'5687345324123123234'},{'7':'96893543453463123234'}],'bbbb':[...],'cccc':[...]}
或者
{'ssss':[['3':'123123453453234'],['4':'3453464567345456'],['5':'5687345324123123234'],['7':'96893543453463123234']],'bbbb':[...],'cccc':[...]}

头都大了。。有没有现成的库做这个工作的?

PHP中文网PHP中文网2648 days ago279

reply all(1)I'll reply

  • 高洛峰

    高洛峰2017-04-17 15:42:44

    mylist = [['3', 'ssss', '123123453453234'],
              ['4', 'ssss', '3453464567345456'],
              ['5', 'ssss', '5687345324123123234'],
              ['7', 'bbbb', '96893543453463123234'],
              ['8', 'bbbb', 'sdfsdfsdfsf'],
              ['9', 'cccc', 'dfgdfg3242']]
    result = {}
    for item in mylist:
        sub_key, key, value = item
        if not key in result:
            result[key] = []
        result[key].append({sub_key: value})
    print result
    # {'ssss': [{'3': '123123453453234'}, {'4': '3453464567345456'}, {'5': '5687345324123123234'}], 'cccc': [{'9': 'dfgdfg3242'}], 'bbbb': [{'7': '96893543453463123234'}, {'8': 'sdfsdfsdfsf'}]}
    result1 = {}
    for item in mylist:
        value1, key, value2 = item
        if not key in result1:
            result1[key] = []
        result1[key].append([value1, value2])
    #{'ssss': [['3', '123123453453234'], ['4', '3453464567345456'], ['5', '5687345324123123234']], 'cccc': [['9', 'dfgdfg3242']], 'bbbb': [['7', '96893543453463123234'], ['8', 'sdfsdfsdfsf']]}
    print result1
    

    reply
    0
  • Cancelreply