Traitor 发表于 2021-11-20 18:04

关于python中列表嵌套字典的值怎么求


a = [
    {'上海': 10, '北京': 9, '深圳': 8, '广州': 7, '重庆': 6, '武汉': 5, '成都': 4, '杭州': 3, '天津': 2, '西安': 1},
    {'上海': 8, '北京': 7, '深圳': 1, '广州': 4, '重庆': 10, '武汉': 3, '成都': 9, '杭州': 2, '天津': 6, '西安': 5},
    {'上海': 8, '北京': 9, '深圳': 10, '广州': 6, '重庆': 1, '武汉': 4, '成都': 2, '杭州': 7, '天津': 5, '西安': 3},
    {'上海': 9, '北京': 10, '深圳': 8, '广州': 7, '重庆': 5, '武汉': 4, '成都': 2, '杭州': 3, '天津': 6, '西安': 1},
    {'上海': 10, '北京': 9, '深圳': 4, '广州': 8, '重庆': 5, '武汉': 7, '成都': 3, '杭州': 6, '天津': 2, '西安': 1},
    {'上海': 7, '北京': 10, '深圳': 1, '广州': 9, '重庆': 4, '武汉': 8, '成都': 3, '杭州': 2, '天津': 5, '西安': 6},
    {'上海': 9, '北京': 10, '深圳': 1, '广州': 8, '重庆': 2, '武汉': 5, '成都': 3, '杭州': 4, '天津': 7, '西安': 6},
    {'上海': 5, '北京': 6, '深圳': 8, '广州': 9, '重庆': 10, '武汉': 1, '成都': 7, '杭州': 2, '天津': 3, '西安': 4}
]


如上,我想求列表中每个每个字典相同键的值,重新再写入一份字典!

new_dict = {"上海":66}

新字典是这样的 以此类推!
初学者,实在是没想出来,求解,谢谢各位!




kk159 发表于 2021-11-20 18:25

import collections, functools, operator

a = [
    {'上海': 10, '北京': 9, '深圳': 8, '广州': 7, '重庆': 6, '武汉': 5, '成都': 4, '杭州': 3, '天津': 2, '西安': 1},
    {'上海': 8, '北京': 7, '深圳': 1, '广州': 4, '重庆': 10, '武汉': 3, '成都': 9, '杭州': 2, '天津': 6, '西安': 5},
    {'上海': 8, '北京': 9, '深圳': 10, '广州': 6, '重庆': 1, '武汉': 4, '成都': 2, '杭州': 7, '天津': 5, '西安': 3},
    {'上海': 9, '北京': 10, '深圳': 8, '广州': 7, '重庆': 5, '武汉': 4, '成都': 2, '杭州': 3, '天津': 6, '西安': 1},
    {'上海': 10, '北京': 9, '深圳': 4, '广州': 8, '重庆': 5, '武汉': 7, '成都': 3, '杭州': 6, '天津': 2, '西安': 1},
    {'上海': 7, '北京': 10, '深圳': 1, '广州': 9, '重庆': 4, '武汉': 8, '成都': 3, '杭州': 2, '天津': 5, '西安': 6},
    {'上海': 9, '北京': 10, '深圳': 1, '广州': 8, '重庆': 2, '武汉': 5, '成都': 3, '杭州': 4, '天津': 7, '西安': 6},
    {'上海': 5, '北京': 6, '深圳': 8, '广州': 9, '重庆': 10, '武汉': 1, '成都': 7, '杭州': 2, '天津': 3, '西安': 4}
]

result = dict(functools.reduce(operator.add,map(collections.Counter, a)))
print(str(result))

kafei000 发表于 2021-11-20 21:01

kk159 发表于 2021-11-20 18:25
import collections, functools, operator

a = [


厉害了,

Traitor 发表于 2021-11-20 21:16

kk159 发表于 2021-11-20 18:25
import collections, functools, operator

a = [


您可以讲一下怎么实现的吗?刚学到匿名函数这里

kafei000 发表于 2021-11-20 21:28


a = [
    {'上海': 10, '北京': 9, '深圳': 8, '广州': 7, '重庆': 6, '武汉': 5, '成都': 4, '杭州': 3, '天津': 2, '西安': 1},
    {'上海': 8, '北京': 7, '深圳': 1, '广州': 4, '重庆': 10, '武汉': 3, '成都': 9, '杭州': 2, '天津': 6, '西安': 5},
    {'上海': 8, '北京': 9, '深圳': 10, '广州': 6, '重庆': 1, '武汉': 4, '成都': 2, '杭州': 7, '天津': 5, '西安': 3},
    {'上海': 9, '北京': 10, '深圳': 8, '广州': 7, '重庆': 5, '武汉': 4, '成都': 2, '杭州': 3, '天津': 6, '西安': 1},
    {'上海': 10, '北京': 9, '深圳': 4, '广州': 8, '重庆': 5, '武汉': 7, '成都': 3, '杭州': 6, '天津': 2, '西安': 1},
    {'上海': 7, '北京': 10, '深圳': 1, '广州': 9, '重庆': 4, '武汉': 8, '成都': 3, '杭州': 2, '天津': 5, '西安': 6},
    {'上海': 9, '北京': 10, '深圳': 1, '广州': 8, '重庆': 2, '武汉': 5, '成都': 3, '杭州': 4, '天津': 7, '西安': 6},
    {'上海': 5, '北京': 6, '深圳': 8, '广州': 9, '重庆': 10, '武汉': 1, '成都': 7, '杭州': 2, '天津': 3, '西安': 4}
]
new_dict = {}
for old_dic in a:
    for key, value in old_dic.items():
      # print(new_dict.get(key, 0))# 使用new_dict.get(key, default=0)会报错
      new_dict = new_dict.get(key, 0) + value
print(new_dict)

写一个容易看懂的

Traitor 发表于 2021-11-20 22:20

kafei000 发表于 2021-11-20 21:28
a = [
    {'上海': 10, '北京': 9, '深圳': 8, '广州': 7, '重庆': 6, '武汉':...
new_dict.get(key, 0) + value
这条还是有点迷糊
new_dict 这能理解
后面还是很懵

kafei000 发表于 2021-11-21 12:11

Traitor 发表于 2021-11-20 22:20
new_dict.get(key, 0) + value
这条还是有点迷糊
new_dict 这能理解


不会的要经常查百度,dic.get(key, 0 )就是获取对应key的value,如果key不存在就返回0

B站搜黑马程序员600集python,蛮适合初学者的

luyers 发表于 2021-11-22 08:04

我也写一个
k = sum(, [])
k = list(set(k))
b = {}
for m in k:
    b = sum()
页: [1]
查看完整版本: 关于python中列表嵌套字典的值怎么求