如何直接在Python中获取字典键作为变量(而不是从值中搜索)?


189

对不起这个基本问题,但是我的搜索没有发现什么,除了如何根据其值获取字典的键外,我不希望使用它,因为我只想要键的文本/名称,并且担心搜索如果字典中有很多条目,按值排序可能最终会返回2个或更多键...我想做的是:

mydictionary={'keyname':'somevalue'}
for current in mydictionary:

   result = mydictionary.(some_function_to_get_key_name)[current]
   print result
   "keyname"

这样做的原因是我将这些信息打印到文档中,并且在执行此操作时要使用键名和值

我看过下面的方法,但这似乎只是返回键的值

get(key[, default])

您是否只想检查字典中是否存在“键名”?因为您已经拥有它。
转租

1
不像我说的那样,需要打印出来,它将通过大量键进行迭代
Rick 2010年

current是当前密钥,只需执行print current
Moberg

4
您将如何只获得字典中的第一把钥匙?(无迭代)
VISQL

Answers:


238

您应该使用以下方法遍历密钥:

for key in mydictionary:
   print "key: %s , value: %s" % (key, mydictionary[key])

10
您可以写for key in mydictionary:
blokeley

7
在python 3.6中:print (f"key: {key}, value: {mydictionary[key]}")
JinSnow

94

如果要打印键和值,请使用以下命令:

for key, value in my_dict.iteritems():
    print key, value

26
对于Python 3:items()而不是iteritems()
toshiro92

82

这样做的原因是我将这些信息打印到文档中,并且在执行此操作时要使用键名和值

基于以上要求,这是我的建议:

keys = mydictionary.keys()
keys.sort()

for each in keys:
    print "%s: %s" % (each, mydictionary.get(each))

我更喜欢for循环my_dict.item()或列表理解之类的其他答案,keys = list(my_dict.keys)但以防万一有人要在Python 3中执行此操作:(第2行)keys = sorted(my_dict.keys())+ add()进行打印。
Honiix

49

如果字典包含这样的一对:

d = {'age':24}

那么你可以得到

field, value = d.items()[0]

对于Python 3.5,请执行以下操作:

key = list(d.keys())[0]

4
Python3.5:TypeError: 'dict_items' object does not support indexing
Sinux

颇为骇人听闻,但使用d .__ iter __().__ next __()可以达到目的。你得到“年龄”。使用此d.items().__ iter __().__ next __()[0]可获得相同的结果。
yoshi

2
在Python3中,这适用于一对命令:key = list(d.keys())[0]
Juha Untinen

如果您有很大的意见,则使用以下next()方法更好:stackoverflow.com/a/27638751/1488445
Juha Untinen

14

keys=[i for i in mydictionary.keys()] 要么 keys = list(mydictionary.keys())


请确保使用代码标签,并解释您的答案。
Chrismas007

9

就如此容易:

mydictionary={'keyname':'somevalue'}
result = mydictionary.popitem()[0]

您将修改字典,并应首先对其进行复制


8

您可以简单地使用*它来解开字典键。例:

d = {'x': 1, 'y': 2}
t = (*d,)
print(t) # ('x', 'y')

python34:SyntaxError:只能将加星标的表达式用作分配目标
Tcll

dang,我使用python34是因为我无法在Windows测试环境中运行任何新版本。
Tcll

5

遍历字典(i)将返回键,然后使用它(i)获取值

for i in D:
    print "key: %s, value: %s" % (i, D[i])

3

对于python 3如果只想获取密钥,请使用它。如果需要这些值,请用print(values)替换print(key)。

for key,value in my_dict:
  print(key)

3

有时我要做的是创建另一个字典,以便能够以我需要的方式访问任何需要作为字符串访问的字典。然后,我遍历多个字典中的匹配键,以构建例如带有第一列作为描述的表。

dict_names = {'key1': 'Text 1', 'key2': 'Text 2'}
dict_values = {'key1': 0, 'key2': 1} 

for key, value in dict_names.items():
    print('{0} {1}'.format(dict_names[key], dict_values[key])

您可以轻松地为大量的字典匹配数据(我喜欢这样的事实,使用字典,您总是可以引用众所周知的键名)

是的,我使用字典来存储函数的结果,所以我不必每次只调用一次函数就运行这些函数,然后随时访问结果。

编辑:在我的示例中,键名并不重要(我个人喜欢使用相同的键名,因为可以更轻松地从我的任何匹配字典中选择一个值),只需确保每个词典中的键数为相同


0

您可以通过将dict键和值强制转换为列表来执行此操作。也可以为项目完成。

例:

f = {'one': 'police', 'two': 'oranges', 'three': 'car'}
list(f.keys())[0] = 'one'
list(f.keys())[1] = 'two'

list(f.values())[0] = 'police'
list(f.values())[1] = 'oranges'

-2

轻松地更改键和值的位置,然后使用值获取键,字典中的键可以具有相同的值,但它们(键)应该不同。例如,如果您有一个列表,并且列表的第一个值是问题的关键,而其他值则是第一个值的规范:

list1=["Name",'ID=13736','Phone:1313','Dep:pyhton']

您可以通过以下循环在Dictionary中轻松保存和使用数据:

data_dict={}
for i in range(1, len(list1)):
     data_dict[list1[i]]=list1[0]
print(data_dict)
{'ID=13736': 'Name', 'Phone:1313': 'Name', 'Dep:pyhton': 'Name'}

那么您可以根据任何输入值找到键(名称)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.