Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 访问和提取词典中的词典集_Python_Dictionary - Fatal编程技术网

Python 访问和提取词典中的词典集

Python 访问和提取词典中的词典集,python,dictionary,Python,Dictionary,我在字典中有一本字典,如下所示: 我的代码查找今天的日期,如果它存在于dict中,则应打印“在”+dict(名称)处找到匹配项” 如果我原谅你的话 看起来是这样的: {'name1': set(['01-25', 'name1@company.com']), 'name2': set(['name2@company.com', '11-29']), 'name3': set(['08-15', 'name3@company.com']), 'name4': set(['01-24', 'name

我在字典中有一本字典,如下所示:

我的代码查找今天的日期,如果它存在于dict中,则应打印“在”+dict(名称)处找到匹配项”

如果我原谅你的话 看起来是这样的:

{'name1': set(['01-25', 'name1@company.com']), 'name2': set(['name2@company.com', '11-29']), 'name3': set(['08-15', 'name3@company.com']), 'name4': set(['01-24', 'name4@company.com'])}
date = today.strftime('%m-%d')
for names in var.keys():
    if date in var[names]: 
        for x in var[names]:
            if x != date:
                email = x
                print  "Found a bday for " + email
我的问题是如何访问电子邮件。我很难理解,我字典中的值目前是一个“集合”,我无法通过索引访问它。一旦我打印了
dict[name][1]
,我就会得到错误类型错误:

“set”对象不支持索引


集合是无序的数据结构,因此不能使用索引访问它们。 即使您将它们键入列表,然后使用索引,即
list(dict[name])[1]
也不能保证返回正确的元素,因为列表的顺序没有定义


选择匹配元素的方法可以是迭代集合,并选择匹配条件(如
类型
和任何可能的正则表达式)的元素,但这也很容易出错,除非集合中几乎没有不同类型的元素。

创建dict时使用的是集合,您应该使用列表或元组的位置

dict.setdefault(name, [emails,bdays])

您可以使用以下内容:

{'name1': set(['01-25', 'name1@company.com']), 'name2': set(['name2@company.com', '11-29']), 'name3': set(['08-15', 'name3@company.com']), 'name4': set(['01-24', 'name4@company.com'])}
date = today.strftime('%m-%d')
for names in var.keys():
    if date in var[names]: 
        for x in var[names]:
            if x != date:
                email = x
                print  "Found a bday for " + email

但是有更好的选项来存储这些信息。

为什么要使用集合?对于集合来说,这似乎不是一个好的用例。为什么不简单地使用一个列表呢?好吧,字典中的信息将从xlsx文件中导入,每个名称、bday、电子邮件将以xlsx工作表中的列的形式出现。请参见以下内容:对于范围(1,6)中的i:name=str(col0[i].value)[0:]emails=str(col2[i].value)[0:]bdays=str(col1[i].value)[5:10]dict.setdefault(name,{emails,bdays}),您应该将其作为问题中的一项编辑。就这样………谢谢。词典中的列表比词典中的词典容易。