在使用 Python 从字典列表和相应计数中提取键列表时需要帮助

Posted

技术标签:

【中文标题】在使用 Python 从字典列表和相应计数中提取键列表时需要帮助【英文标题】:Need help in extracting key list from List of dictionaries and corresponding counts using Python 【发布时间】:2021-09-21 13:11:25 【问题描述】:

您好,我希望使用 Python 从字典列表及其相应计数中提取所有键的列表。在下面的代码中使用但无法做到这一点可以有人在这方面帮助我

数据看起来像这样,

people = ['name': "Tom", 'age': 10, "city" : "NewYork",
'name': "Mark", 'age': 5, "country" : "Japan",
'name': "Pam", 'age': 7, "city" : "London",
'name': "Tom", 'hight': 163, "city" : "California",
'name': "Lena", 'weight': 45, "country" : "Italy",
'name': "Ben", 'age': 17, "city" : "Colombo",
'name': "Lena", 'gender': "Female", "country" : "Italy",
'name': "Ben", 'gender': "Male", "city" : "Colombo"]


def search(name):
    p_count = 0
    for p in people:
        if p['name'] == name:
            p_count = p_count+1
            return p, p_count
search("Pam")

def search1(list_dict):
    for i in list_dict:
        def getList(i):
            return i.keys()
search1(people)

我想输出如下, 姓名:8,年龄:4,城市:3,国家:2 等等。

我是新手,有人可以帮助我吗

【问题讨论】:

【参考方案1】:

只需创建一个临时字典来保存计数结果,对于列表的每个字典中的每个键,使用dict.get默认值0将计数加1,最后返回这个字典。

def getKeyCount(lst):
    out = 
    for d in lst:
        for k in d.keys():
            out[k] = out.get(k, 0) + 1
    return out

getKeyCount(people)
#output
'name': 8, 'age': 4, 'city': 5, 'country': 3, 'hight': 1, 'weight': 1, 'gender': 2

【讨论】:

非常感谢您的帮助......无论如何我都可以得到子计数,例如纽约:1,伦敦:2 那不是key,那是value,所以需要对values进行统计。 yaa 键和值...在某些情况下我必须计算 那变成一个新问题了,你可以在 *** 上提问,肯定会有人回答的。【参考方案2】:

您可以制作一个哈希表,并遍历每个键的键

hash = 
for d in list_dict:
    for k in d.keys():
        if k not in hash:
            hash[k] = 0
        hash[k] += 1

print(hash)

【讨论】:

1) 请解释一下这是一个哈希表。这实际上只是另一个dict。 2) 这是覆盖内置的hash 函数。应该使用不同的变量名。 3)这本质上是answer already provided的副本。

以上是关于在使用 Python 从字典列表和相应计数中提取键列表时需要帮助的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 提取列表中的字典键

如何从 Python 中的字典中提取所有值?

Python添加2个带有常用键的列表到字典

有没有办法在我的基于 django 的应用程序上打印字典键和相应的值列表?

Python3:有条件地从具有理解的字典中提取键

python字典-基础