首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从字典中提取键/值对

从字典中提取键/值对
EN

Stack Overflow用户
提问于 2013-06-13 05:40:45
回答 3查看 17.2K关注 0票数 6

好的,这是一个Python问题:

我们有一本字典:

代码语言:javascript
运行
复制
my_dict = {
           ('John', 'Cell3', 5): 0, 
           ('Mike', 'Cell2', 6): 1, 
           ('Peter', 'Cell1', 6): 0, 
           ('John', 'Cell1', 4): 5, 
           ('Mike', 'Cell2', 1): 4, 
           ('Peter', 'Cell1', 8): 9
          }

如何创建另一个只包含名称为"Peter“的键/值对的字典?

如果您将此字典转换为元组的元组列表,是否有帮助

代码语言:javascript
运行
复制
tupled = my_dict.items()

然后再把它翻回字典?

你如何用列表理解来解决这个问题?

提前感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-13 05:43:06

尝试一下,使用Python2.7或更高版本中提供的dictionary comprehensions

代码语言:javascript
运行
复制
{ k:v for k,v in my_dict.items() if 'Peter' in k }

或者,如果我们确定名称总是放在第一个位置,我们可以这样做,这会更快一些:

代码语言:javascript
运行
复制
{ k:v for k,v in my_dict.items() if k[0] == 'Peter' }

如果您使用的是较旧版本的Python,我们可以使用生成器表达式和dict()构造函数的正确参数来获得相同的结果:

代码语言:javascript
运行
复制
dict((k,v) for k,v in my_dict.items() if k[0] == 'Peter')

不管怎么说,结果和预期的一样:

代码语言:javascript
运行
复制
=> {('Peter', 'Cell1', 8): 8, ('Peter', 'Cell1', 6): 0}
票数 6
EN

Stack Overflow用户

发布于 2013-06-13 15:11:36

对于任何名称

代码语言:javascript
运行
复制
def select(d, name):
    xs = {}
    for e in d:
        if e[0].lower() == name.lower(): xs[e] = d[e]

    return xs

d = {('Alice', 'Cell3', 3): 9,
     ('Bob', 'Cell2', 6): 8,
     ('Peter', 'Cell1', 6): 0,
     ('Alice', 'Cell1', 6): 4,
     ('Bob', 'Cell2', 0): 4,
     ('Peter', 'Cell1', 8): 8
    }

print select(d, 'peter')

>>>{('Peter', 'Cell1', 8): 8, ('Peter', 'Cell1', 6): 0}
票数 1
EN

Stack Overflow用户

发布于 2013-06-13 06:38:36

代码语言:javascript
运行
复制
{item for item in my_dict.iteritems() if item[0][0].lower() == 'peter'}

.iteritems遍历字典,我们使用.lower进行匹配,而不区分大小写。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17075848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档