Python:迭代字典的键值,每个键的值数量不一

史密斯探员先生

我在遍历字典键的值并执行数学运算时遇到问题,其中每个键都有不同数量的值:

fruits  = {
"banana": [4,5],
"apple": 2,
"orange":1.5,
"pear": 3   
}

我想从代码中得到什么(即我理想的作品):

banana [8, 10]
apple 4
orange 3.0
pear 6

我想将每个键中的每个整数乘以 (*) 2。我尝试了以下操作,但无法正确执行:

for fruit, price in fruits.items():
    print(fruit, price*2)
    for i in price:
        print(fruit, i*2)

...但无济于事:这会产生:

banana [4, 5, 4, 5]
banana 8
banana 10
apple 4

好的,所以我试过这个:

for fruit, price in fruits.items():
#print(type(price))

if len(fruit)>0:
    print(price*2)

elif len(fruit) == 0:
    print(price*2)

它产生了这个:

[4, 5, 4, 5]
4
3.0
6

这甚至可能吗?

任何答案将不胜感激。

亲切的问候,

A. 史密斯

jpp

如果列表是例外而不是规则,那么您可以使用try/except如下:

def multiplier(x, n):
    try:
        return float(x)*n
    except TypeError:
        return [i*n for i in x]

res = {k: multiplier(v, 2) for k, v in fruits.items()}

print(res)

{'banana': [8, 10], 'apple': 4.0, 'orange': 3.0, 'pear': 6.0}

或者,collections.Iterable如果您希望显式测试可迭代对象,则可以使用

from collections import Iterable

def multiplier(x, n):
    return [i*n for i in x] if isinstance(x, Iterable) else x*n

然后,对于格式化的输出,您可以迭代结果:

for k, v in res.items():
    print(k, v)

banana [8, 10]
apple 4.0
orange 3.0
pear 6.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在python字典中查找每个键的唯一值数量

在嵌套字典的每个键中添加相反数量的值

如何从python字典中的键值对中获取同一键的所有值

python迭代字典值(如果一个键具有一个或多个值)

类型的字典Python列表 - 每个键 - 值转换为一个单独的字典

根据特定键的值从python字典中提取键值对

将键和值附加到键值对字典Python

如何从一个列表创建字典,其中每个元素的数量是键,值是相应元素的列表?

在 Python 中迭代一个字典键的多个值

Python3:将一个字典中每个键的多个值除以另一字典中每个键的多个值

如何通过基于 python 中的匹配属性迭代字典的键/值对,为列表中的每个项目分配新类?

如何找到字典中每个键的最小值/最大值?以及如何找到每个键的值数量?

使用.iteritems()迭代Python字典中的键,值

如何在Python中迭代字典以获取键和值?

如何检查字典中是否存在键值对?如果一个键的值是字典

每个键都有唯一可能值的字典?

python迭代删除具有键值的字典

更改列表中每个字典的特定键的值-python

如何对字典python的每个键的值进行排序?

列出为字典理解中每个键的值-Python

python:循环使用每个键有多个值的字典

python3计算字典中每个键的值

为字典python中的每个键选择最大值

获取字典python中每个键的最大值

所有键的每个元素的 Python 字典最小值

在单个表中存储键值字典和值键字典

Python:当一个键有n个值时,如何在for循环中迭代dict的每个元素

枚举字典迭代键和值

Python:按值或键排序字典并将结果子集到前三个键值对