파이썬에서 직접 사전 키를 변수로 얻으려면 어떻게해야합니까 (값에서 검색하지 않음)?


189

이 기본적인 질문에 대해 죄송하지만 이것에 대한 검색은 키의 텍스트 / 이름을 원하고 사용하기를 원하지 않는 값을 기준으로 사전 키를 얻는 방법 이외의 다른 것을 나타내지 않습니다. 사전에 많은 항목이있는 경우 값을 기준으로 2 개 이상의 키를 반환 할 수 있습니다 ... 내가하려고하는 것은 이것입니다.

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

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

그 이유는 문서에 인쇄하고 키 이름과 값을 사용하고 싶기 때문입니다.

아래 방법을 보았지만 키의 값을 반환하는 것 같습니다.

get(key[, default])

사전에 'keyname'이 있는지 확인하고 싶습니까? 당신이 있기 때문에 이미 있습니다.
relet

1
아니 내가 말했듯이, 그것을 인쇄해야합니다, 그것은 많은 키를 반복 할 것입니다
Rick

current현재 열쇠입니다.print current
Moberg

4
사전에서 첫 번째 키를 어떻게 얻습니까? (반복 없음)
VISQL

답변:


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
파이썬 3의 경우 :
iteritems

82

그 이유는 문서에 인쇄하고 키 이름과 값을 사용하고 싶기 때문입니다.

위의 요구 사항에 따라 이것이 내가 제안하는 것입니다.

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

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

나는 for loop on my_dict.item()또는 list comprehension과 같은 다른 답변을 선호 keys = list(my_dict.keys)하지만 누군가 파이썬 3에서 이것을 원한다면 : (line 2) keys = sorted(my_dict.keys())+ add () to print.
Honiix

50

사전에 다음과 같이 한 쌍이 포함 된 경우 :

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

꽤 hackish이지만 d .__ iter __ () .__ next __ ()가 트릭을 수행합니다. 당신은 '나이'를 얻습니다. 이 d.items () .__ iter __ () .__ next __ () [0]과 동일한 결과를 얻습니다.
yoshi

2
Python3에서 이것은 한 쌍의 dicts에 적용됩니다 :key = list(d.keys())[0]
Juha Untinen

당신이 사용하는 거대한 딕셔너리가있는 경우 next()이다 더 나은에 따라 : stackoverflow.com/a/27638751/1488445
주하 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

댕, 나는 python34를 사용한다. 나는 Windows 테스트 환경에서 더 새로운 것을 실행할 수 없기 때문이다.
Tcll

5

사전 (i)을 반복하면 키가 반환되고 키 (i)를 사용하여 값을 가져옵니다.

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

3

파이썬 3의 경우 키만 얻으려면 이것을 사용하십시오. 값을 원하면 print (key)를 print (values)로 바꾸십시오.

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']

이 루프를 통해 사전에 쉽게 데이터를 저장하고 사용할 수 있습니다.

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'}

그런 다음 모든 입력 값을 기준으로 키 (이름)를 찾을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.