相关疑难解决方法(0)

在字典中按值获取密钥

我创建了一个函数,它将在a中查找年龄Dictionary并显示匹配的名称:

dictionary = {'george' : 16, 'amber' : 19}
search_age = raw_input("Provide age")
for age in dictionary.values():
    if age == search_age:
        name = dictionary[age]
        print name
Run Code Online (Sandbox Code Playgroud)

我知道如何比较和找到我只是不知道如何显示这个人的名字的年龄.另外,KeyError由于第5行,我得到了一个.我知道这不正确,但我无法弄清楚如何让它向后搜索.

python dictionary

575
推荐指数
21
解决办法
127万
查看次数

是否在Python 3.6+中订购了字典?

字典在Python 3.6中排序(至少在CPython实现下),与之前的版本不同.这似乎是一个重大变化,但它只是文档中的一小段.它被描述为CPython实现细节而不是语言特性,但也暗示这可能成为未来的标准.

在保留元素顺序的同时,新字典实现如何比旧字典实现更好?

以下是文档中的文字:

dict()现在使用PyPy开创的"紧凑"表示.与Python 3.5相比,新dict()的内存使用量减少了20%到25%.PEP 468(在函数中保留**kwargs的顺序.)由此实现.这个新实现的顺序保留方面被认为是一个实现细节,不应该依赖(这可能会在未来发生变化,但是在更改语言规范之前,希望在几种版本的语言中使用这个新的dict实现为所有当前和未来的Python实现强制命令保留语义;这也有助于保持与随机迭代顺序仍然有效的语言的旧版本的向后兼容性,例如Python 3.5).(由INADA Naoki在issue 27350中提供.最初由Raymond Hettinger提出的想法.)

2017年12月更新:Python 3.7 保证dict保留插入顺序

python dictionary python-3.x python-internals python-3.6

386
推荐指数
5
解决办法
8万
查看次数

Python中的反向字典查找

通过了解字典中的值,有没有直接找到密钥的方法?

我能想到的就是:

key = [key for key, value in dict_obj.items() if value == 'value'][0]
Run Code Online (Sandbox Code Playgroud)

python dictionary

86
推荐指数
9
解决办法
10万
查看次数

Python:使用字典中的值来交换密钥的最佳方法?

我收到一个字典作为输入,并希望返回一个字典,其键将是输入的值,其值将是相应的输入键.价值观是独一无二

例如,说我的输入是:

a = dict()
a['one']=1
a['two']=2
Run Code Online (Sandbox Code Playgroud)

我希望我的输出是:

{1: 'one', 2: 'two'}
Run Code Online (Sandbox Code Playgroud)

为了澄清我希望我的结果等同于以下内容:

res = dict()
res[1] = 'one'
res[2] = 'two'
Run Code Online (Sandbox Code Playgroud)

任何巧妙的Pythonian方式来实现这一目标?

谢谢

python dictionary

85
推荐指数
12
解决办法
8万
查看次数

在python中切换字典中的键和值

说我有这样的字典:

my_dict = {2:3, 5:6, 8:9}
Run Code Online (Sandbox Code Playgroud)

有没有办法可以切换键和值来获得:

{3:2, 6:5, 9:8}
Run Code Online (Sandbox Code Playgroud)

python dictionary key

43
推荐指数
5
解决办法
5万
查看次数

python中1:1映射的数据结构?

我有一个问题,需要一个可逆的1:1键到值的映射.

这意味着有时我想找到一个给定键的值,但有时我想找到给定值的键.键和值都保证唯一.

x = D[y]
y == D.inverse[x]
Run Code Online (Sandbox Code Playgroud)

显而易见的解决方案是每次我想要反向查找时简单地反转字典:反转字典非常容易,这里有一个配方但是对于大字典它可能非常慢.

另一种方法是创建一个新的类,它将两个字典统一起来,每个字典对应一种查找.这很可能很快,但会消耗两倍于单个字典的内存.

那么我可以使用更好的结构吗?

  • 我的应用程序要求这应该非常快,并尽可能少地使用内存.
  • 结构必须是可变的,并且强烈希望变异对象不应该导致它更慢(例如强制完整的重新索引)
  • 我们可以保证键或值(或两者)都是整数
  • 可能需要该结构来存储数千或数百万件物品.
  • Keys&Valus保证是唯一的,即len(set(x))== len(x)代表[D.keys(),D.valuies()]中的x

python data-structures

30
推荐指数
3
解决办法
9553
查看次数

Python:获取字典索引的关键字

可能重复:
反向字典查找 - 使用Python 进行字典的Python
反向映射

如何在字典中获取索引的键?

例如:

i = {'a': 0, 'b': 1, 'c': 2}
Run Code Online (Sandbox Code Playgroud)

所以,如果我想获得i [0]的关键,它将返回'a'

python dictionary

18
推荐指数
3
解决办法
12万
查看次数

快速找到两个大文本文件之间的差异

我有两个3GB的文本文件,每个文件有大约8000万行.它们共享99.9%的相同行(文件A有60,000个唯一行,文件B有80,000个唯一行).

如何在两个文件中快速找到这些独特的行?是否有任何现成的命令行工具?我正在使用Python,但我认为找到一个有效的Pythonic方法加载文件并进行比较的可能性较小.

任何建议表示赞赏.

python diff text compare file

10
推荐指数
1
解决办法
1万
查看次数

python的可逆字典

我想以类似的形式将一些数据存储在Python中:{1:'a', 2:'b'}.每个值都是唯一的,不仅仅是其他值,还包括键.

是否有一个简单的数据结构,我可以使用它来获取相应的对象,无论我是否要求使用'key'或'value'?例如:

>>> a = {1:'a', 2:'b'}
>>> a[1]
'a'
>>> a['b']
2
>>> a[3]
KeyError
Run Code Online (Sandbox Code Playgroud)

'keys'是标准的python int,值是短(<256char)字符串.

我目前的解决方案是创建一个反向字典并搜索它,如果我在原始字典中找不到结果:

pointsreversed = dict((v, k) for k, v in points.iteritems())
def lookup(key):
    return points.get(key) or pointsreversed.key()
Run Code Online (Sandbox Code Playgroud)

这使用了两倍的空间,这不是很好(我的词典可以达到几百兆),平均减慢50%.

编辑:正如在几个答案中提到的,两个dicts不会使内存使用量增加一倍,因为它只是字典,而不是内部的项目,即重复.

有没有改进的解决方案?

python dictionary hashtable

9
推荐指数
2
解决办法
6014
查看次数

Python反向/反向映射(但每个键有多个值)

这实际上是这个问题的变体,但不是重复的:

Python反向/反转映射

给出这样的字典:

mydict= { 'a': ['b', 'c'], 'd': ['e', 'f'] }

怎么能反转这个字典得到:

inv_mydict = { 'b':'a', 'c':'a', 'e':'d', 'f':'d' }

请注意,值在每个键下唯一地跨越.

注意:我以前有语法map = ...dict = ...提醒不使用map,dict因为它们是内置函数,请参阅下面的优秀评论和答案:)

python mapping dictionary inverse

8
推荐指数
1
解决办法
3921
查看次数