迭代字典键的子集

2024-10-01 04:45:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我想学习如何将字典中的某些键/值传递给for循环中的另一个函数。“某些”键都共享相同的初始字符串,并按如下所示的尾随整数递增:

data = {}
data["HMD1"] = [a,b,c]
data["HMD2"] = [d,f,g] #and so on...

在同一本词典中,还有其他名称不同的钥匙。现在在for循环中,我想将以“HMD”开头的每个键的值传递给另一个函数。以下是失败尝试的最小工作示例:

^{pr2}$

这是一个错误的猜测,当然它会返回一个错误,因为eval()试图计算“HMD1”,它不是一个变量,而是数据中的一个键。有人知道怎么做吗?在


Tags: and函数字符串名称fordata字典so
2条回答

您根本不需要eval来完成此操作。例如,您只需要使用.format构建字符串

for f in range(1,4): #range don't include the end point
    out = dummyfun(data["HMD{}".format(f)])

这样你就能得到想要的结果。但是如果这个键不在dict中,那么这将失败,您可以先检查它,捕捉异常,或者在desire键不在的情况下提供一个默认值

^{pr2}$

只需使用for循环遍历字典并使用if语句检查键的有效性:

for key in yourDict: #a for loop for dict iterates through its keys
    if 'HMD' in key: #or you can replace with any other conditional
        #DO WHAT YOU WANT TO DO HERE

下面是一个快速工作的例子:

^{pr2}$

随着对所需内容的进一步了解,您还可以反向查看并创建键字符串并打印这些键指向的值:

#let's say you want to print HMD1, HMD2, HMD4, but not anything else
keylist = [#list of keys that you want]
for key in keylist:
    if key in data:
        print data[key]

再一次,这是一个有效的例子。在

>>> data = {'HMD1': [1,2,3], 'HMD3':'heyo mayo, this shouldnt print', 'HMD4':123, 'HMD2':['g', 'h', 'i'], 'HMNOT2':'if this prints, I did something wrong'}
>>> keylist = ['HMD1', 'HMD2', 'HMD4']
>>> for key in keylist:
...     if key in data:
...             print data[key]
...
[1, 2, 3]
['g', 'h', 'i']
123

相关问题 更多 >