python - 计算每个字典键中值的数量(包括一个值)

标签 python python-3.x dictionary

我有一个包含 200e3 个整数键的字典,每个键都有一个或两个值(字符串)。

我需要编写逻辑来检查每个键是否具有多个值,如果有,则添加到列表中。

my_dict = defaultdict(list)
my_dict = {1: ['789456', '456123'], 2: '123456', 3: '987654'}
final = []

这就是我最初的解决方案。这适用于两个值,但当只有一个值存在时返回字符长度。

for key, value in my_dict.items():
    if len(value) > 1:
        final.append(key)
    else:
        continue

我尝试枚举,但它只返回范围。

for x in enumerate(my_dict.items()):
    print(x)

我想出了这个解决方案,但我不确定使用 defaultdict(list) 是否会出现任何问题。或者如果有更大的问题我可能看不到。

for key, value in my_dict.items():
    if isinstance(value, list):
       final.append(key)
    else:
       continue

最佳答案

请尝试这个:

final = [k for k,v in my_dict.items() if type(v) == list and len(v) > 1]

或在您的代码中:

for key, value in my_dict.items():
    # only this additional condition is present before `and`
    if type(value) == list and len(value) > 1:
        final.append(key)

这里,'34534'['534', '456465'] 都是可迭代对象,并且 len() 函数适用于两者因此,我们需要检查值的类型,并且仅在 list 的情况下检查长度。

关于python - 计算每个字典键中值的数量(包括一个值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67407851/

相关文章:

python - 第二大行多个 Pandas 列

dictionary - golang : How to assign a new map to a struct field

python - Python 中 "eval"中捕获的变量

python - 如何使用 python 抑制 Windows 文件处理?

python - 我如何从值是列表的字典中创建字典列表?

java - 是否可以没有任何与 Smart GWT ComboBoxItem 关联的文本?

python - 迭代两个或多个列表/numpy 数组...并将每个项目相互比较并避免 python 中的循环

python - DynamoDB 并行扫描不拆分结果

python - Tensorflow LinearRegressor 特征不能有等级 0

python - Pygame,有什么方法可以从显示器上查看整个事件队列吗?